2010-05-07 4 views
4

나는 을 isApproved 및 사실 세트를 isPublished 한 재산을 검색하는 DetachedCriteria을 만들었습니다. 다음과 같이 정의됩니다.최대 절전 모드 하위 쿼리 및 DetachedCriteria

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

일부 쿼리에서는이 기준을 다시 사용하고 싶습니다. 을 isApproved 및 이 할 수있는 방법이있는 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); 

제한을 isPublished은이 경우에는 내가 대체 하시겠습니까? 사용하려고 시도했습니다.

.add(Subqueries.geAll(.... 

하지만 제대로 작동하지 않을 수 있습니다. 최대 절전 모드의 하위 쿼리에 대한 적절한 설명서를 찾을 수 없습니다. 팁을 환영합니다.

답변

2

이 작동합니다 :

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

+0

HI, 들으. 나는 이것을 체크했으나 나의 생각은 재사용 할 수있는 DetachedCriteria를 정의하는 것이다. 따라서 두 번째 기준은 자체 제한 + DetachedCriteria에 정의 된 제한을 사용할 수 있어야합니다. – dawez