Выполнить MySQL LIMIT в подзапросе JPQL - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть следующие три таблицы, которые необходимо оставить объединенными для получения подробностей.

Таблица A

messageId |имя отправителя

Таблица B

messageId |содержимое

Таблица C

messageId |eventTime |status

Таблица A и Таблица B имеют отношение один к одному, а Таблица A и Таблица C имеют отношение один ко многим. Мне нужно создать левое объединение для всех 3 таблиц, чтобы получить значения для всех таблиц с последним статусом из таблицы C

Идентификатор сообщения будет в таблицах, как показано ниже

enter image description here

Я создал следующий запрос JPQL, который могу использовать для извлечения всех трех сущностей.

select d, e, s from TableA a
left join TableB b on a.messageId = b.messageId
left join TableC c on a.messageId = c.messageId
and c.status = (select st.status from TableC st where st.messageId = a.messageId order by st.eventTime DESC limit 1)

Но из-за ограничения, которое я использовал в запросе, я не могузапустить как запрос JPQL. Можно ли отформатировать этот запрос, чтобы он выполнялся как запрос JPQL? (кроме собственного запроса в JPA)

1 Ответ

1 голос
/ 04 ноября 2019

Насколько я знаю, вы не можете на самом деле ограничить результаты подзапроса в JPQL. Лучше всего было бы создать представление, которое будет выполнять ваш подзапрос, или, в вашем случае, даже весь запрос и затем выбрать из представления.

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