JPA проверяет, если нулевой запрос - PullRequest
0 голосов
/ 26 февраля 2019

Я использую запрос к базе данных с JPA следующим образом:

@Query("SELECT " +
        "new Report(" +
        "sum (r.fraction1)," +
        "sum (r.fraction2)) from Report r")
Report calculateTotalReports();

Когда база данных заполнена, она работает нормально, но когда она пуста, приложение вылетает.Как я могу проверить, когда таблица содержит строки, а затем выбрать сумму?Я пытался использовать CASE WHEN ... THEN, но JPA не предоставляет его.

Журнал сбоев:

QueryException: не удалось создать экземпляр класса [com.statistic.server.entity.Отчет] из кортежа] с коренной причиной

java.lang.IllegalArgumentException: null at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод) ~ [na: 1.8.0_201] at sun.reflect.NativeConstructorAccessorImpl.InIn (Неизвестный источник) ~ [na: 1.8.0_201] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance (Неизвестный источник) ~

1 Ответ

0 голосов
/ 26 февраля 2019

Я думаю, вы можете использовать COALESCE в этом случае, тогда он вернет 0, если r.fraction1 равно нулю.

    @Query("SELECT " +
    "new Report(" +
    "COALESCE(sum(r.fraction1),0)," +
    "COALESCE(sum(r.fraction2),0)) from Report r")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...