Hibernate Detached Subquery

时间:2012-01-17 17:08:29

标签: hibernate

您好我想执行此查询

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

如何使用Hibenate的标准来做到这一点?

1 个答案:

答案 0 :(得分: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查询比使用Criteria简单得多:

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使用的:实体。