Diego
Diego

Reputation: 3

Hibernate Detached Subquery

Hi I want to execute this query

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

How can I do it using Hibenate's criterias?

Upvotes: 0

Views: 292

Answers (1)

JB Nizet
JB Nizet

Reputation: 692181

First of all, I deduce from your query that there should be a toOne association between Ticket and Urgencia. Your SQL query could be rewritten as

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

Second, this query is really simple, and doesn't need to be dynamically composed. Using a HQL query would be much simpler than using Criteria:

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

Now if you really want to do it with criteria:

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

Next time you ask about Hibernate, include your entities, because that's what Hibernate works with: entities.

Upvotes: 1

Related Questions