Ich versuche, die Ergebnismenge der Abfrage der Hibernate-Kriterien nach Ergebnis einer anderen Abfrage einzuschränken. Ich weiß, wie man dieses Problem mit JPQL löst:Verengung des Ergebnisses der Abfrage nach Unterabfrage
Aber ich kann mir nicht vorstellen, wie man solche Abfrage mit Kriterien machen. Irgendwelche Ideen, wie man diese Auswahl mit Kriterien implementiert? Hibernate 3.3 wird verwendet.
UPD: Der Versuch, dieses Problem zu lösen ich die folgenden Kriterien Abfrage gemacht haben:
Criteria resultCriteriaQuery = this.hibernateSession.createCriteria(DocPackage.class, "pack");
DetachedCriteria personSubquery = DetachedCriteria.forClass(Person.class, "pers").
add(Restrictions.like("pers.loFstLstName", "%" + searchObject.getApplicant().toLowerCase() + "%")).
add(Restrictions.eqProperty("itm.objectId", "pers.id"));
DetachedCriteria applicantsSubquery = DetachedCriteria.forClass(ObjectGroup.class, "objGrp").
add(Restrictions.eqProperty("pack.applcantGroup", "objGrp")).
createAlias("objGrp.items", "itm").
add(Restrictions.eq("itm.objectClass", "org.cp.model.common.Person")).
add(Subqueries.exists(personSubquery));
resultCriteriaQuery.add(Subqueries.exists(applicantsSubquery));
Aber es funktioniert nicht. Ich habe eine NullPointerException
auf resultCriteriaQuery.list()
. Was ist falsch an dieser Abfrage? Irgendwelche Ideen?