Hibernate - COALESCE с функцией агрегирования не работает на пустой базе данных - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь подготовить запрос на 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 голосов
/ 01 октября 2018

ОК, я понял это.Это было связано с предложением GROUP BY.После удаления все работает нормально.Тема может быть закрыта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...