Eclipselink Union & Order By - неправильное окончание JPQL - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь выполнить следующий запрос:

SELECT u FROM Entity_UsersInfoDetail u WHERE u.id IN (SELECT ub.id FROM Entity_UsersBoosts ub WHERE ub.boostExpiresAt > FUNCTION('NOW')) 
UNION
SELECT u FROM Entity_UsersInfoDetail u WHERE u.id IN (SELECT ua.fromUser.id FROM Entity_UsersActions ua WHERE ua.toUser.id = :userId AND ua.status = :status AND ua.actionType <> :actionType)
UNION
SELECT u FROM Entity_UsersInfoDetail u

Этот запрос выполняется отлично и дает правильный набор результатов. То, что я хочу добавить предложение «ORDER BY» сразу после последнего выбора, так что оно становится:

SELECT u FROM Entity_UsersInfoDetail u WHERE u.id IN (SELECT ub.id FROM Entity_UsersBoosts ub WHERE ub.boostExpiresAt > FUNCTION('NOW')) 
UNION
SELECT u FROM Entity_UsersInfoDetail u WHERE u.id IN (SELECT ua.fromUser.id FROM Entity_UsersActions ua WHERE ua.toUser.id = :userId AND ua.status = :status AND ua.actionType <> :actionType)
UNION
SELECT u FROM Entity_UsersInfoDetail u ORDER BY u.lastActive DESC

Но когда я пытаюсь запустить с предложением «ORDER BY», это дает мне:

[2020-04-09 18:31:56] Syntax error parsing [SELECT u FROM Entity_UsersInfoDetail u WHERE u.id IN (SELECT ub.id FROM Entity_UsersBoosts ub WHERE ub.boostExpiresAt > FUNCTION('NOW'))
[2020-04-09 18:31:56] UNION
[2020-04-09 18:31:56] SELECT u FROM Entity_UsersInfoDetail u WHERE u.id IN (SELECT ua.fromUser.id FROM Entity_UsersActions ua WHERE ua.toUser.id = :userId AND ua.status = :status AND ua.actionType <> :actionType)
[2020-04-09 18:31:56] UNION
[2020-04-09 18:31:56] SELECT u FROM Entity_UsersInfoDetail u ORDER BY u.lastActive DESC].
[2020-04-09 18:31:56] [376, 403] The query contains a malformed ending.

Я использую Eclipselink 2.7.6. Как добавить заказ к последнему выбранному запросу? Заранее спасибо.

...