2017-10-03 12 views
1

이 SQL 쿼리를 Java로 Hibernate JPA Criteria (Restrictions 등)로 작성하려면 어떻게해야합니까? 다음과 같이 하위 쿼리에 대해 별도의 기준 인스턴스를 만들 수간단한 Hibernate Criteria 서브 쿼리를 작성하는 방법

getBaseCriteria() 
    .add(Restrictions.eq("executed", false)) 
    // Missing Second Where Filter Here 
    .addOrder(Order.asc("queuedOn")) 
    .list(); 

답변

1

시도를 단순히 다른 조건으로 추가 :

SELECT q.* FROM queue AS q WHERE q.executed = false AND q.queued_on = (SELECT min(queued_on) FROM queue WHERE item_id = q.item_id);

내가에만이 같은 첫 번째 부분을 작성하는 관리

DetachedCriteria subCriteria = DetachedCriteria.forClass(Queue.class, "sub") 
    .add(Restrictions.eqProperty("sub.itemId","main.itemId")) 
    .setProjection(Projections.projectionList().add(Projections.min("sub.queuedOn"))); 

session.createCriteria(Queue.class, "main") 
    .add(Subqueries.propertyEq("main.queuedOn", subCriteria)); 
    .add(Restrictions.eq("main.executed", false)); 
    .addOrder(Order.asc("main.queuedOn")) 
    .list(); 
+0

'session.createCriteria'는 5.2에서 더 이상 사용되지 않습니다. – Dragas