gpt4 book ai didi

java - Projections.count ("fieldName") 是否总是产生 Long ?

转载 作者:行者123 更新时间:2023-11-30 04:02:23 25 4
gpt4 key购买 nike

我正在尝试创建一个 Hibernate Criteria 查询来获取表中匹配特定条件的行数。类似的东西

SELECT COUNT(*) FROM MyTable WHERE field1 = <numVal> and field2 = 'strVal2'

这是我的标准代码

public static int getTransactionCount(Session session, int parentID) {

Criteria criteria = session.createCriteria(MyTable.class);

return (Integer) criteria.add(Restrictions.eq("parentID", parentID))
.add(Restrictions.eq("txnType", TransactionType.SOME_TYPE))
.setProjection(Projections.count("txnID")).uniqueResult();

}

我明白

       Caused by: java.lang.ClassCastException: 
java.lang.Long cannot be cast to java.lang.Integer
at com.mydomain.MyClass.getTransactionCount(MyClass.java:123)

我的标准代码是否有问题,或者我应该总是期待很长时间才能得到计数?

最佳答案

您应该使用 Long 类型。在某些具有大型数据库的场景中,与您的条件匹配的实体数量可能会超过 Integer.MAX (2147483647)。因此,返回类型为 Long.MAX,其大小是天文数字 (9223372036854775807)。

关于java - Projections.count ("fieldName") 是否总是产生 Long ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21669094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com