休眠查询将计数转换为整数



我收到此错误:

java.lang.ClassCastException: java.math.BigInteger 不能强制转换为 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 转换为整数

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

最新更新