Hibernate-具有聚合功能的COALESCE在空数据库上不起作用

时间:2018-10-01 11:40:45

标签: hibernate

我正在尝试在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;
}

1 个答案:

答案 0 :(得分:0)

好,我知道了。这是由于GROUP BY子句。删除后,一切正常。主题可以关闭。