问题
I have class like
public User{
Long id;
Set<String> roles;
}
How do I query all User
objects with the role of "ADMIN"
EDIT:
I'm using Hibernate 3.0.5. And have tried most of the obvious approaches.
from Users where roles in('ADMIN')
gives a JDBC error.
from Users u where u.roles in('ADMIN')
gives a class cast exception
I think this may be a problem with this particular version of hibernate.
回答1:
I've found solution:
"from User as user where 'ADMIN' in elements(user.roles)";
Somehow hql function value() have to help with this, you can also experiment with it, but that hql query above works for me.
回答2:
You can use the query below
"from User as user where user.id in (select user.id from Role as role left join role.user as user where role.name = 'ADMIN')"
回答3:
This should do it:
session.createQuery("from User where roles in ('ADMIN')");
来源:https://stackoverflow.com/questions/14090364/hql-how-to-query-elementcollection-of-string