2010-05-07 2 views
4

Я создал DetachedCriteria, что с извлечением поместий, которые isApproved и isPublished набор для истинного. Это определяется следующим образом:Hibernate подзапросов и DetachedCriteria

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

Я хотел бы использовать эти критерии в некоторых запросах. В этом случае я хотел бы заменить isApproved и isPublished ограничения с 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); 

Есть ли способ сделать это? Пытался использовать

.add(Subqueries.geAll(.... 

Но не может заставить его работать должным образом. Я не мог найти правильную документацию по подзапросам в спящем режиме. Подсказки приветствуются.

ответ

2

Это должно работать:

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

+0

HI, ТНХ. Я проверил это, но моя идея состоит в том, чтобы определить DetachedCriteria, которая была бы повторно использована. Таким образом, 2-й критерий должен иметь возможность использовать свои собственные ограничения + ограничения, определенные в DetachedCriteria. – dawez

Смежные вопросы