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 function 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 に答える