使用某些条件休眠计数行

2022-09-03 16:22:42

假设我有一个表格Person,我想计算所有那些“出生日期”不为空并且他们是学生的人。假设我有两列:

birthDate Date (can be null)
isStudent boolean (default: false)

我如何使用休眠来做到这一点。?


答案 1
Criteria crit = session.createCriteria(Person.class);
crit.add( Restrictions.isNotNull("birthDate"));
crit.add( Restrictions.eq("isStudent", true));
crit.setProjection(Projections.rowCount());
Integer count = (Integer)crit.uniqueResult();

答案 2
Criteria crit = session.createCriteria(Person.class);
crit.add( Restrictions.isNotNull("birthDate"));
crit.add( Restrictions.eq("isStudent", true));
List<Person> students = crit.list();
Integer count = students.size();

或者,如果只需要一个计数值,并且没有返回任何列表:

Criteria crit = session.createCriteria(Person.class);
crit.setProjection(Projections.rowCount());
crit.add( Restrictions.isNotNull("birthDate"));
crit.add( Restrictions.eq("isStudent", true));
return (Long) crit.uniqueResult(); 

推荐