Hibernate计算具有一些标准的行
假设我有一个表人员,我想计算那些“birthDate”不为空且他们是学生的人。 假设我有两列:
birthDate Date (can be null) isStudent boolean (default: false)
我怎么能用hibernate做这个..?
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();
Criteria crit = session.createCriteria(Person.class); crit.add( Restrictions.isNotNull("birthDate")); crit.add( Restrictions.eq("isStudent", true)); List 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();
Number count = (Number) session.createQuery( "select count(p.id) from Person p" + " where p.birthDate is not null and p.isStudent = true").uniqueResult();
int result= (int)((long)session.createQuery("select count(p) from User p where p.mobileNumber = :pMobileNumber") .setParameter("pMobileNumber", mobileNumber).uniqueResult());
用它。 它的工作原理
public class IncIncidentListGridModel { private String historyStatus = null; public String getHistoryStatus() { return historyStatus; } public void setHistoryStatus(String historyStatus) { this.historyStatus = historyStatus; } public void run() { IncIncidentListGridModel resultCount = (IncIncidentListGridModel) ((SQLQuery) hibersession .createSQLQuery("select count(ch.incident_capa_history_id) as historyStatus from incident_capa_history ch, incident_capa ic where ic.incident_capa_id = ch.FK_incident_capa_id and ic.incident_capa_id='011'")) .addScalar("historyStatus", Hibernate.STRING) .setResultTransformer( Transformers.aliasToBean(IncIncidentListGridModel.class)) .uniqueResult(); System.out.println("count result" + resultCount.getHistoryStatus()); } }