我正在尝试在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;
}
答案 0 :(得分:0)
好,我知道了。这是由于GROUP BY子句。删除后,一切正常。主题可以关闭。