HQL如何查询String的ElementCollection

时间:2012-12-30 11:34:35

标签: java hibernate jdbc hql

我喜欢上课

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的一个问题。

3 个答案:

答案 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')");