2012-01-17 3 views
0

Привет Я хочу, чтобы выполнить этот запросHibernate Частный Subquery

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

Как я могу сделать это с помощью Hibenate в из условий?

ответ

1

Прежде всего, исходя из вашего запроса, необходимо, чтобы между 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: сущности.

+0

Спасибо, что сработало отлично! – Diego