Hibernate Отдельный подзапрос - PullRequest
0 голосов
/ 17 января 2012

Привет, я хочу выполнить этот запрос

SELECT *
FROM nm_ticket
WHERE id_urgencia IN (SELECT ID_urgencia FROM nm_urgencia WHERE id_gravedad = 2);

Как я могу сделать это, используя критерии Hibenate?

1 Ответ

1 голос
/ 17 января 2012

Прежде всего, из вашего запроса я делаю вывод, что между Ticket и Urgencia должна быть связь toOne. Ваш SQL-запрос может быть переписан как

select * from nm_ticket t
inner join nm_urgencia u on t.id_urgencia = u.id_urgencia
where u.id_gravedad = 2

Во-вторых, этот запрос действительно прост и не требует динамической компоновки. Использование запроса HQL было бы намного проще, чем использование критериев:

select t from Ticket t where t.urgencia.idGravedad = 2

Теперь, если вы действительно хотите сделать это по критериям:

Criteria c = session.createCriteria(Ticket.class, "t");
c.createAlias("t.urgencia", "u");
c.add(Restrictions.eq("u.idGravedad", 2));
return c.list();

В следующий раз, когда вы спросите о Hibernate, включите ваши сущности, потому что это то, с чем Hibernate работает: сущности.

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