답변:
이전 버전의 최대 절전 모드 (<5.2)의 경우 :
클래스 이름이 Book이라고 가정합니다.
return (Number) session.createCriteria("Book")
.setProjection(Projections.rowCount())
.uniqueResult();
적어도 Number
, 아마도 Long
.
return (Number) session.createCriteria(Book.class).setProjection(Projections.rowCount()).uniqueResult();
Java에서는 보통 int를 반환 하고이 양식을 사용해야합니다.
int count = ((Long)getSession().createQuery("select count(*) from Book").uniqueResult()).intValue();
다음은 공식 최대 절전 모드 문서에서 우리에게 알려주 는 것입니다 .
쿼리 결과 수를 반환하지 않고 계산할 수 있습니다.
( (Integer) session.createQuery("select count(*) from ....").iterate().next() ).intValue()
그러나 항상 Integer
인스턴스를 반환하지는 않으므로 java.lang.Number
안전 을 위해 사용하는 것이 좋습니다 .
org.hibernate.dialect.function.StandardAnsiSqlAggregationFunctions.CountFunction
( StandardBasicTypes.LONG )
당신은 시도 할 수 있습니다 count(*)
Integer count = (Integer) session.createQuery("select count(*) from Books").uniqueResult();
데이터베이스의 테이블이 아닌 Books
이름이 어디에 있습니까 class
?
Long count = (Long) session.createQuery("select count(*) from Book").uniqueResult();
이것은 Hibernate 4 (Tested)에서 작동합니다.
String hql="select count(*) from Book";
Query query= getCurrentSession().createQuery(hql);
Long count=(Long) query.uniqueResult();
return count;
getCurrentSession ()은 다음과 같습니다.
@Autowired
private SessionFactory sessionFactory;
private Session getCurrentSession(){
return sessionFactory.getCurrentSession();
}