8

我有课

public User{
   Long id;
   Set<String> roles;
}

如何查询User具有角色的所有对象"ADMIN"

编辑:

我正在使用休眠 3.0.5。并尝试了大多数明显的方法。

from Users where roles in('ADMIN')给出 JDBC 错误。 from Users u where u.roles in('ADMIN')给出一个类转换异常

我认为这可能是这个特定版本的休眠的问题。

4

3 回答 3

27

我找到了解决方案:

"from User as user where 'ADMIN' in elements(user.roles)";

不知何故,hql 函数 value() 必须对此有所帮助,您也可以尝试一下,但是上面的 hql 查询对我有用。

于 2014-04-18T10:38:14.990 回答
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')"
于 2012-12-30T12:03:23.107 回答
-3

这应该这样做:

session.createQuery("from User where roles in ('ADMIN')");
于 2012-12-30T11:40:20.060 回答