我已经制定了,像这样的类:如何为hibernate OneToMany关系编写hql查询?
class User {
@Id
private long id;
@OneToMany(fetch = FetchType.EAGER,cascade = CascadeType.ALL)
Set<UserRole> userRoles;
}
class UserRole {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false)
private int id;
@Column(name = "role", nullable = false, length = 45)
private String role;
}
我试图查询具有特定角色的用户(在这种情况下,与角色ROLE_ADMIN所有用户),使用下面的查询:
org.hibernate.query.Query<User> userQuery=session.createQuery("from User as mc where mc.userRoles in (from UserRole as ur where ur.role in (:uRoles))",User.class);
Set<String> roles = new HashSet<String>();
roles.add("ROLE_ADMIN");
userQuery.setParameterList("uRoles", roles);
List<User> admins = userQuery.getResultList();
但是,查询没有返回任何结果。
'设置 roles = new HashSet ();'这里有什么角色的用法?而'userRoles'的争论来自哪里? –
msagala25
userRoles是一个错字。抱歉。 '设置 roles'包含我在这个特定情况下搜索的所有角色的列表,它只是ROLE_ADMIN,但它可能是ROLE_ADMIN和ROLE_WRITER,例如 –
AHAW