2010-02-05 4 views
4

누구든지이 쿼리를 작성/정리할 수 있습니까? 먼저 테이블의 행 수를 얻으려고합니다. 그런 다음 실제로 행 집합을 가져와야합니다. 두 쿼리를 수행하는 데 동일한 기준 인스턴스를 어떻게 사용할 수 있는지 잘 모르겠습니다.최대 절전 모드 도움말에 대한 도움말

나는 이런 식으로 뭔가가 카운트를 가져올 수 :

Criteria criteria = session.createCriteria(MyTable.class); 
criteria.setProjection(Projections.rowCount()); 
Integer count = (Integer) criteria.uniqueResult(); 
int numRows = count.intValue(); 

그리고 (나는 매김 목적으로 일부만을 필요로) 행을 가져올 :

Criteria criteria = session.createCriteria(MyTable.class); 
criteria.setFirstResult(offset); 
criteria.setMaxResults(limit); 
criteria.addOrder(Order.desc(orderBy.toString())); 
List<MyType> myType = criteria.list(); 

내가 먼저 널해야합니까를 투영법 등을 사용하여 행 수를 가져올 수있는 기준을 사용할 수 있도록해야합니다.

두 가지 쿼리를 효율적으로 수행 할 수 있도록 전체 행 수와 결과 목록을 효율적으로 정리할 수 있도록 도움이 필요합니다. 감사!!

답변

6

MyTable 개체를 검색하려면 개수 예측을 지우고 결과 변환기를 설정해야합니다. 두 번째 쿼리에 대해이 작업을 시도해보십시오

criteria.setProjection (널)

criteria.setResultTransformer (Criteria.ROOT_ENTITY);

1

카운트와 투영에 동일한 기준을 다시 사용 하시겠습니까? 나는 그것을 할 수있는 방법을 찾지 못했습니다. 그래서 나는 자신의 방법으로 건물에 기준과 제한을 두어 건물을 두 번 만들었습니다. 한 번만 계산하고 한 번만 데이터 페이지를 만듭니다. 더 좋은 방법이 있다면, 나는 모두 귀에있어 ...

+0

네 .. 그렇습니다. 내가 지금까지했던 일을 끝내 었습니다. 입력에 감사합니다. – oym