例如,如果我们有一个表Books,我们如何用hibernate计算图书记录的总数?


当前回答

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

其他回答

在Java中,我通常需要返回int并使用这种形式:

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

你可以试试count(*)

Integer count = (Integer) session.createQuery("select count(*) from Books").uniqueResult();

其中Books是类外的名称,而不是数据库中的表。

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

以下是官方hibernate文档告诉我们的:

查询结果不返回,可以统计查询结果个数:

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

但是,它并不总是返回Integer实例,因此为了安全起见,最好使用java.lang.Number。