Hibernate: группа в присоединении - PullRequest
0 голосов
/ 05 июня 2018

В моей базе данных есть следующие объекты:

  • Билет
  • Запись билета

Запись билета связана с билетом и имеетстолбец, который ссылается на идентификатор билета.Я хочу получить билеты, связанные только с 1 заявкой.Я понял, как должен выглядеть сценарий SQL, но не знаю, как мне преобразовать его в код Hibernate.

select * from
tickets ticket
 join
ticket_entries entry on ticket.id=entry.ticket_id
group by ticket.id
having count(*) = 1

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Вы можете попробовать следующий HQL:

select t.id
from tickets t join t.ticket_entries entry
group by t.id
having count(*) = 1

Основное отличие от вашего необработанного SQL-запроса состоит в том, что в HQL для объединения не требуется условие ON.Скорее, определения сущностей определяют, что такое отношение соединения.

Обратите внимание, что select * в сочетании с group by, как правило, не допускается или, по крайней мере, не рекомендуется.Вместо этого вам следует выбрать только билет id здесь или, возможно, какой-то другой агрегат.

0 голосов
/ 05 июня 2018

Очень похоже на HQL, просто немного измените объединения:

select ticket.id, count(entry.id) 
from
tickets ticket
 join ticket.ticket_entries entry
group by ticket.id
having count(entry.id) = 1

Просто помните, что вы получите List<Object[]> из этого запроса, и вам необходимо соответствующим образом извлечь данные в своей логике.

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