cra*_*man 241 java hibernate count
例如,如果我们有一个表Books,我们如何计算hibernate的书记录总数?
Sal*_*dur 310
对于旧版本的Hibernate(<5.2):
假设班级名称为Book:
return (Number) session.createCriteria("Book")
.setProjection(Projections.rowCount())
.uniqueResult();
Run Code Online (Sandbox Code Playgroud)
它至少是一个Number
,很可能是一个Long
.
mar*_*osh 102
在Java中,我通常需要返回int并使用以下形式:
int count = ((Long)getSession().createQuery("select count(*) from Book").uniqueResult()).intValue();
Run Code Online (Sandbox Code Playgroud)
Ant*_*nio 43
以下是官方hibernate文档告诉我们的内容:
您可以计算查询结果的数量而不返回它们:
( (Integer) session.createQuery("select count(*) from ....").iterate().next() ).intValue()
Run Code Online (Sandbox Code Playgroud)
但是,它并不总是返回Integer
实例,因此最好使用java.lang.Number
安全性.
Jon*_*kes 12
你可以试试 count(*)
Integer count = (Integer) session.createQuery("select count(*) from Books").uniqueResult();
Run Code Online (Sandbox Code Playgroud)
Books
名称在哪里class
- 而不是数据库中的表.
Long count = (Long) session.createQuery("select count(*) from Book").uniqueResult();
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Hibernate 5+,则查询将被修改为
Long count = session.createQuery("select count(1) from Book")
.getSingleResult();
Run Code Online (Sandbox Code Playgroud)
或者如果你需要TypedQuery
Long count = session.createQuery("select count(1) from Book",Long.class)
.getSingleResult();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
244618 次 |
最近记录: |