I'm trying to do something like this, but using Criteria
instead of HQL
:
select user from User where user in (
select user from UserDomain where domain.id = "XXX"
)
User being an entity having a one-to-many
relationship to the join table UserDomain.
The point here is simply to find Users that are linked to a Domain
having id = "XXX".
This seems like it should be very simple... but I'm having no luck so far turning up any useful docs.
I finally found it. Turns out it wasn't so hard after all... once you know!
Yep, there is was, staring me right in the face in the Javadoc: http://www.dil.univ-mrs.fr/~massat/docs/hibernate-3.1/api/org/hibernate/Criteria.html
The subquery is very useful in cases, that you need to search the User, having one-to-many UserDomains. In that case, the
WHERE UserId IN (subquery)
brings big advanatage: we are still working with a flatUser
table/entity... so we can do the proper paging.Here is the documentation 15.8. Detached queries and subqueries
The draft could be: subquery:
And the main query:
Now we have a query, which could be used for paging
In clauses usualy can be transformed into join. Tyr this: