For example:
EXISTS ( SELECT * FROM [table] WHERE ... )
How to make such query using Hibernate?
HQL doesn't allow to use exists
statement.
UPD Starting from Hibernate 5 it supports it as a predicate in WHERE
You can use several approaches:
boolean exists = session.createQuery("select 1 from PersistentEntity where exists (select 1 from PersistentEntity p where ...)").uniqueResult() != null;
. Thank to author bellow.count(*) > 0
but this is bad for performance Avoid Using COUNT() in SQL When You Could Use EXISTS()
boolean exists = session.createQuery("from PersistentEntity where ...").setMaxResults(1).uniqueResult() != null;
but this will force Hibernate to load all fields and make hydration to object even if you need just to check for a null.session.get(PersistentEntity.class, id) != null
and this will work faster if you enabled second level cache but it will be a problem if you need more criteries than just id
.getSession().createQuery("select 1 from PersistentEntity where ...").uniqueResult() != null)
If your goal is inspect some set on emptiness, you may use simple HQL query:
boolean exists = (Long) session.createQuery("select count(*) from PersistentEntity where ...").uniqueResult() > 0
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With