two tables subconsultas ejemplos ejemplo hibernate subquery hibernate-criteria

hibernate - subconsultas - hql join two tables



Criterios de Hibernate con propiedad no incluida(subconsulta) (2)

Quiero ejecutar una consulta algo así como

Select id, name from information where name not in (select firstname from contact where id = 1) Information Id Name 1 Test Contact id firstname 1 name 2 Test

Si estoy usando la función neProperty (), devolverá registros como name != Test.

¿Cómo puedo implementar el uso de criterios de hibernación?

Gracias


Puede usar DetachedCriteria para compilar la subconsulta.

// This corresponds to (select firstname from contact where id = 1) DetachedCriteria subquery = DetachedCriteria.forClass(Contact.class) .add(Restrictions.eq("id", 1)) .setProjection(Projections.property("name")) // This corresponds to (select information where name not in (subquery)) ICriteria criteria = session .createCriteria(Information.class) .add(Subqueries.notIn("name", subquery));

En lugar de usar una subconsulta, solo puede cargar el contacto utilizando session.get, con la posibilidad de presionar el caché:

Contact contact = session.Get<Contact>(1); ICriteria criteria = session .createCriteria(Information.class) .add(Property.ne("name", contact.getName()));

Descargo de responsabilidad: soy a) no soy un programador de Java yb) puede haber cometido errores, por lo que probablemente no compila. El código es más para mostrar más o menos la idea y es de esperar útil de todos modos.


Crear un criterio de selección para todos:

Criteria cr = session.createCriteria(Your.class); List list = cr.list();

Luego puede agregarle una restricción, es decir, donde la columna 1 = 8 etc. de esta manera:

cr.add(Restrictions.eq("YourCondition", YourCondition));

Finalmente, puede proporcionar la cláusula no en esta manera:

cr.add(Restrictions.not(Restrictions.in("YourNotInCondition", YourNotInCondition)));