java - Spring Hibernate Template 执行方法为 Oracle 上的计数查询返回什么对象类型?

标签 java oracle hibernate spring types

在Oracle数据库上运行时,以下Spring Hibernate Template的对象的运行时类型是什么? (Spring 2.5 和 Hibernate 3.3.2GA)代码返回 SQL 查询是计数查询,如 select count(*) from table?

 String sql = "select count(*) from table";
 BigDecimal count = (BigDecimal) hibernateTemplate.execute(
   new HibernateCallback() { 
    public Object doInHibernate(Session session) throws HibernateException {
     SQLQuery query = session.createSQLQuery(sql);
     return (BigDecimal) query.uniqueResult();
    }});
 return count;

此代码引发以下异常:

javax.ejb.EJBException: EJB Exception: : java.lang.ClassCastException: java.math.BigDecimal cannot be cast to [Ljava.lang.Object;
    at org.hibernate.cache.StandardQueryCache.put(StandardQueryCache.java:83)
    at org.hibernate.loader.Loader.putResultInQueryCache(Loader.java:2185)
    at org.hibernate.loader.Loader.listUsingQueryCache(Loader.java:2129)
    at org.hibernate.loader.Loader.list(Loader.java:2087)
    at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:289)
    at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1695)
    at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
    at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:150)
    at org.hibernate.impl.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:804)
    at com.db.abstrack.dao.hibernate.RfqCdoUsDaoHibernate$1.doInHibernate(RfqCdoUsDaoHibernate.java:124)

最佳答案

怎么样

long value = ((Number)query.uniqueResult()).longValue();
return Long.valueOf(value);

这适用于 Number 的所有子类,例如 Long、Double、Biginteger 或 BigDecimal。

关于java - Spring Hibernate Template 执行方法为 Oracle 上的计数查询返回什么对象类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3504751/

相关文章:

java - 泄漏抽象法则的异常(exception)

database - 如何查找和跟踪 Oracle 警报日志

oracle - 在 Oracle 中识别具有最大行数的表

java - 具有供应商特定属性的 JPA find() 方法

spring-boot - 为什么 Spring Data Envers 修订类型返回 UNKNOWN?

java - java中jpa一对多数据插入错误

java - 检测工具提示启动 java

java - 如何创建 json 文件,然后在 get 请求中将其返回给 React 应用程序

java - 在最小化和取消最小化之前无法调整内部框架的大小

java - "to com.zaxxer.hikari.HikariDataSource:"Springboot下绑定(bind)属性失败