hibernate - Hibernate - 具有聚合功能的 COALESCE 不适用于空数据库
问题描述
我正在尝试在 HQL 中准备一个查询,如果数据库中没有匹配的行,它将返回 BigDecimal.ZERO,或者如果有任何行,则返回特定字段的总和。
查询工作,当数据库中有东西时,但当表为空时抛出 NoResultException。你能告诉我,下面的代码有什么问题吗?
public BigDecimal getNumberOfUnitsFor(String tfiCode) {
String query = "SELECT COALESCE(SUM(unit.units), 0.0) " +
"FROM TFIUnitPurchase unit " +
"INNER JOIN TFI tfi on tfi.uid = unit.tfi " +
"WHERE tfi.code = :code " +
"GROUP BY tfi.code";
Session session = getSession();
BigDecimal sum = session.createQuery(query, BigDecimal.class)
.setReadOnly(true)
.setParameter("code", tfiCode)
.getSingleResult();
session.close();
return sum;
}
解决方案
好的,我已经想通了。这是由于 GROUP BY 子句。删除它后,一切正常。主题可以关闭。
推荐阅读
- java - 我应该如何使用 JAVA 在 Android Studio 中创建圆形图像视图
- html - 调整窗口大小时防止 div 块偏移
- python - Django-recaptcha 总是显示“此字段是必需的”。甚至,它就在那里
- java - java - 如何在放心的java中将字符串列表传递到POST请求正文中?
- asp.net-mvc - 如何在我的应用程序中添加 kentico 的页面构建器?
- python - Flask RESTful API 翻译
- sql - Oracle 12C - JSON_TABLE - 当 json 列为空时如何返回表中的其他列
- javascript - react-native-web 也可以像原生应用程序一样通过网络向用户智能手机发送推送通知吗?
- javascript - Javascript 获取第一张图片作为博主的缩略图
- c++ - C++ 内存似乎没有理由被释放