2012-01-17 46 views
0

您好我想执行这个查询Hibernate的独立式子查询

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 

现在,如果你真的想用标准来做到这一点:

你问关于Hibernate,包括你的实体
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 2012-01-17 19:07:24