对于Oracle上的计数查询,Spring Hibernate Template执行方法返回哪种对象类型?

对于Oracle上的计数查询,Spring Hibernate Template执行方法返回哪种对象类型?,第1张

对于Oracle上的计数查询,Spring Hibernate Template执行方法返回哪种对象类型?

原来,这

ClassCastException
可能是由于Hibernate标准查询缓存中的错误所致。

解决方案是在查询中添加标量:

String sql = "select count(*) as result from table";BigDecimal count = (BigDecimal) ht.execute(new HibernateCallback() {    public Object doInHibernate(Session session) throws HibernateException {        SQLQuery query = session.createSQLQuery(sql);        // Add scalar to avoid bug in Hibernate query cache.        query.addScalar("result", Hibernate.BIG_DECIMAL);        return query.uniqueResult();    }});

参考文献:

  • 带有SQLQuery和setCacheable(Class)的ClassCastException
  • Martin Schaaf的博客:具有SQLQuery和setCacheable(true)的ClassCastException
  • 使用Hibernate和EhCache缓存原始SQL计数
  • HHH-5163在基于可缓存投影的条件上应用ResultTransformer时遇到的错误
  • Hibernate尝试使用ResultTransformer缓存结果时发生ClassCastException


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5019693.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存