我喜欢上课
public User{
Long id;
Set<String> roles;
}
如何查询角色为User
"ADMIN"
个对象
修改
我正在使用Hibernate 3.0.5。并尝试了大多数明显的方法。
from Users where roles in('ADMIN')
给出了JDBC错误。
from Users u where u.roles in('ADMIN')
给出了一个类强制转换异常
我认为这可能是这个特定版本的hibernate的一个问题。
答案 0 :(得分:22)
我找到了解决方案:
"from User as user where 'ADMIN' in elements(user.roles)";
不知何故hql函数value()必须帮助解决这个问题,你也可以试验一下,但上面的hql查询对我有用。
答案 1 :(得分:1)
您可以使用以下查询
"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')"
答案 2 :(得分:-1)
这应该这样做:
session.createQuery("from User where roles in ('ADMIN')");