我需要获取以下查询的结果,但出现类型转换异常。请大家帮忙!
SELECT COUNT(*) FROM ( SELECT DISTINCT a.PROPSTAT_CODE,a.PROPSTAT_DESC,a.PROPSTAT_TYPE FROM CNFGTR_PROPSTAT_MSTR a WHERE 1 = 1 )
我的代码如下,
Query query = session.createSQLQuery(sqlQuery);
listRes = query.list();
int ans = ((Integer)listRes.get(0)).intValue();
提前致谢
最佳答案
既然您说您将上述查询包装在另一个返回计数的查询中,那么这将满足您的需求,而无需转换为任何其他数据类型。
Integer count = (Integer) session.createSQLQuery("select count(*) as num_results from (SELECT DISTINCT a.PROPSTAT_CODE,a.PROPSTAT_DESC,a.PROPSTAT_TYPE FROM CNFGTR_PROPSTAT_MSTR a WHERE 1 = 1)")
.addScalar("num_results", new IntegerType())
.uniqueResult();
System.err.println(count);
诀窍是调用“addScalar”。这告诉 Hibernate 您希望将“num_results”数据类型预先转换为整数,无论您的特定数据库实现或 JDBC 驱动程序更喜欢什么。如果没有这个,Hibernate 将使用 JDBC 驱动程序首选的类型,这解释了为什么这里的不同答案有不同的强制转换。如果您希望针对不同的关系数据库运行应用程序,则专门设置所需的结果类型可以消除有关返回的数据类型的所有猜测,为您提供正确的结果,并且具有更可移植性的额外好处。如果您调用“list”而不是“uniqueResult”,那么您可以将结果直接分配给列表
关于java - 如何使用 hibernate createSQLQuery 获取整数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23338412/