Criterios de subconsulta con not null

Quiero convertir el siguiente subconsulta para usar el modo de hibernación subconsulta:

getCurrentSession().createQuery("from Employee where id in (select adminId from Department where adminId is not null)")
                   .list();
  • Empleado:
    @ManyToOne
    @JoinColumn(name = "fk_department_id", nullable = true) 
    private Department department;
  • Departamento:
    @OneToMany(fetch = FetchType.EAGER)
    @JoinColumn(name = "fk_department_id")
    private Set<Employee> employees = new HashSet<Employee>(0);

Puede alguien por favor me proporcione un ejemplo de esta conversión, porque he leído algunos ejemplos y todavía no puedo averiguar cómo hacerlo.

BTW, tengo un grave problema recientemente con el ajuste de cualquier bloque de código cuando la publicación de una nueva pregunta, yo como de costumbre copiar el código de mi IDE o de un archivo de texto y resaltar a continuación el código rodean con el botón de código, pero se muestra muy mal.
Eso es porque estás usando fichas en lugar de espacios.
puede usted por favor decirme cómo fue capaz de volver a formatear el código, de modo que se puede evitar tal cosa en el futuro ?
En Eclipse me tienen opciones para reemplazar fichas con el espacio, así que cuando me copia mi código no tengo que hacer nada. En su caso sólo he quitado las pestañas y se inserta espacios (mientras que en las listas que usted puede ser que necesite para escribir 8 espacios en lugar de 4.)
1. Preferences -> Java -> CodeStyle -> Formatter -> Edit -> Indentation -> Tab policy: Spaces only. Me acabo de hacer de forma manual – fue, en pocas líneas, así que no fue un gran dolor 🙂

OriginalEl autor Mahmoud Saleh | 2011-12-05

1 Kommentar

  1. 19
    Criteria c = session.createCriteria(Employee.class, "e");
    DetachedCriteria dc = DetachedCriteria.forClass(Departemt.class, "d");
    dc.add(Restrictions.isNotNull("d.adminId");
    dc.setProjection(Projections.property("d.adminId"));
    c.add(Subqueries.propertyIn("e.id", dc));

    La setProjection llamada hace que la subconsulta devolver el adminId propiedad sólo que en lugar de toda la Department entidad. El Subqueries.propertyIn crea una restricción: la propiedad id de búsqueda empleado debe ser in el conjunto de resultados devueltos por la subconsulta.

    funciona muy bien, gracias, pero por favor puede proporcionar algo de explicación para las dos últimas líneas, no podía encontrar doc para ellos.
    Hecho. Ver mis ediciones.

    OriginalEl autor JB Nizet

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea