2012-01-17 2 views
0

안녕하세요 Hibenate의 CRITERIAS를 사용최대 절전 모드 분리 된 하위 쿼리

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

어떻게 내가 할 수있는이 쿼리를 실행하려면?

답변

1

먼저 티켓과 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가 작동하는 것 : 엔티티.

+0

감사합니다. 완벽하게 작동했습니다. – Diego