HQL如何查询String的ElementCollection

问题描述 投票:0回答:3

我有这样的课

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

java hibernate jdbc hql
3个回答
30
投票

我找到了解决方案:

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

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


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')"

-3
投票

这应该可以做到:

session.createQuery("from User where roles in ('ADMIN')");
© www.soinside.com 2019 - 2024. All rights reserved.