JPQL-запрос с оракулом дБ - PullRequest
0 голосов
/ 21 декабря 2018

Я использую jpql jpa eclipselink. Следующий запрос не будет работать:

SELECT c FROM TableA c WHERE c.forumId = :forumId AND c.isDefault = true HAVING MAX (c.validFrom)

Ошибка, которую я получаю "Выражение не является допустимым условным выражением"

1 Ответ

0 голосов
/ 26 декабря 2018

Предложение HAVING работает только с выражением GROUP BY.

Предложение HAVING позволяет фильтровать результаты GROUP BY.

Ваш вопрос:

Я хочу получить максимальное значение. Как я могу сделать выражение из этого

Но вы можете сделать запрос без GROUP BY и HAVING, чтобы делать то, что вы хотите:

select c from TableA c WHERE c.validFrom = (
    SELECT MAX(c2.validFrom) 
    FROM TableA c2  
    WHERE c2.Id = c.Id AND c.forumId = :forumId AND c.isDefault = true
)

Если вы хотите использовать GROUP BY и HAVING, вы можете сделать:

SELECT c FROM TableA c WHERE c.validFROM = (
    SELECT MAX(validFROM) 
        FROM TableA 
        WHERE forumId = :forumId AND isDefault = true
        GROUP BY validFROM
        HAVING validFROM=c.validFROM
)
...