java - Hibernate 查询将 count 转换为 int?

标签 java sql hibernate

我收到此错误:

java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Integer

我的想法是检查选择的计数值,但我在转换它时遇到问题。

附上下面的代码。

有什么想法吗?

public List<Map<String, Object>> contaQuery(String sqlCount) throws MensagemException {

    Session session = HibernateUtil.getSession();
    try {

        String sql = sqlCount;
        int query = ((Integer) session.createSQLQuery("select count(*) from (" + sqlCount + ") as subquery")
                .uniqueResult());

        if (query <= 50000) {

            return rodarQuery(sql);
        } else {

            throw new MensagemException("Too many Registers");

        }

    } finally {
        session.close();

    }

}

最佳答案

正如 Farlan 评论中所述, 通过调用 intValue()

将 BigInteger 返回值从 uniqueResult 转换为 Integer
final Query query;
final BigInteger bigResult;
final int result;

query = session.createSQLQuery("select count(*) from (" + sqlCount + ") as subquery");
bigResult = (BigInteger)query.uniqueResult();

if (bigResult != null)
{
    result = bigResult.intValue();
}
else
{
    result = ...some value of your choosing, perhaps 0.
)

if (result < 50000)
... stuff

关于java - Hibernate 查询将 count 转换为 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46610606/

相关文章:

java - 如何将日期转换为毫秒

java - 为什么总是调用父类(super class)构造函数

java - 使用 Xtend 进行 Android 开发(再次)

java - JPA:可以使用 "long fooId"而不是 "Foo foo"作为 @JoinColumn (对于 JSON 兼容)?

sql - 确定对每个项目执行的最后一个操作是安装还是删除

mysql - SQL 派生表

mysql - MySQL 中何时使用单引号、双引号和反引号

sql - 尝试持久化实体时,具有相同标识符值的不同对象已与 session 关联

java - 对于映射到 java.lang.Class 的列的查询,不支持区分符类型 null

java - 如何进行 hibernate 手动连接?