java - hql count




我們如何使用Hibernate對行進行計數? (5)

Long count = (Long) session.createQuery("select count(*) from Book") .uniqueResult();

例如,如果我們有一個表格Books,那麼我們如何計算使用Hibernate的書籍記錄總數?


以下是官方hibernate文檔告訴我們的這些信息:

您可以計算查詢結果的數量而不返回它們:

( (Integer) session.createQuery("select count(*) from ....").iterate().next() ).intValue()

但是,它並不總是返回Integer實例,因此為了安全起見,最好使用java.lang.Number


假設類名是Book:

return (Number) session.createCriteria("Book")
                  .setProjection(Projections.rowCount())
                  .uniqueResult();

它至少是一個Number ,最有可能是一個Long


在Java中,我通常需要返回int並使用這種形式:

int count = ((Long)getSession().createQuery("select count(*) from Book").uniqueResult()).intValue();

這在Hibernate 4(測試)中起作用。

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();
}




count