这些是我的域名对象
User{
hasMany = {roles: UserRole}
}
UserRole{
User user
Role role
}
Role{
String authority
}
我需要根据用户的角色查找用户。为此,我试图使用以下标准:
def role_admin = Role.findByAuthority('ROLE_ADMIN')
def criteria = new DetachedCriteria(User).build {
roles{
role{
idEq(role_admin.id)
}
}
}
result.users = criteria.list(params)
result.total = criteria.count()
以上将始终返回一个结果,即使我通过直接查看数据库验证应该有更多结果。传递给列表的params
是正确的,但我尝试删除它们只是为了确定。我无法看到上述问题,有什么建议吗?
我也试过这个
roles{
role{
eq("authority","ROLE_ADMIN")
}
}
但它抛出异常:
未知栏' role_alias2_.authority'在' where子句'
答案 0 :(得分:1)
这对我有用:
def criteriaUsers = UserRole.createCriteria()
def users = criteriaUsers.listDistinct{
eq("role", role_admin)
}.user
旁注:从您的类的命名法看起来,您使用的是spring-security-core插件。在我看来,hasMany = [roles: UserRole]
是多余的,因为关联用户 - 角色已经在UserRole
类中建模。