Я пытаюсь подготовить запрос на 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;
}