2010-05-07 10 views
4

J'ai créé un DetachedCriteria qui récupère biens qui ont le isApproved et IsPublished ensemble à vrai. Il est défini de la manière suivante:Mise en veille prolongée et des sous-requêtes DetachedCriteria

DetachedCriteria activePublishedCriteria = DetachedCriteria.forClass(Estate.class) 
    .add(Restrictions.eq("isApproved", true)) 
    .add(Restrictions.eq("isPublished", true)) 
    .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); 

Je souhaite réutiliser ce critère dans certaines requêtes. Dans ce cas, je voudrais remplacer le isApproved et IsPublished restrictions à la DetachedCriteria

Criteria criteria = getSession().createCriteria(Estate.class) 
     .createAlias("city", "c") 
     .add(Restrictions.eq("c.id", cityID)) 
     // the following 2 lines should use the DetachedCriteria 
     .add(Restrictions.eq("isApproved", true)) 
     .add(Restrictions.eq("isPublished", true)) 
     .setProjection(Projections.rowCount()); 
    return (Integer) criteria.list().get(0); 

Est-il possible de le faire? Je ai essayé d'utiliser

.add(Subqueries.geAll(.... 

Mais ne peut pas le faire fonctionner correctement. Je n'ai pas pu trouver la documentation appropriée sur les sous-requêtes dans Hibernate. Les pourboires sont les bienvenus.

Répondre

2

Cela devrait fonctionner:

.add(Subqueries.geAll(value, detachedCriteria))

+0

HI, thx. J'ai vérifié ceci mais mon idée est de définir un DetachedCriteria qui serait réutilisable. Le deuxième critère devrait donc pouvoir utiliser ses propres restrictions + les restrictions définies dans les DetachedCriteria. – dawez