Grails Criteria - 列表内容
Grails Criteria - list contents
这些是我的域对象
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()
上面总是 return 个结果,尽管我已经通过直接查看数据库验证应该有更多结果。传递给列表的 params
是正确的,但我尝试删除它们只是为了确定。我看不出上面有什么问题,有什么建议吗?
我也试过这个
roles{
role{
eq("authority","ROLE_ADMIN")
}
}
但是抛出异常:
Unknown column 'role_alias2_.authority' in 'where clause'
这对我有用:
def criteriaUsers = UserRole.createCriteria()
def users = criteriaUsers.listDistinct{
eq("role", role_admin)
}.user
旁注:从您的 classes 的命名法来看,您似乎正在使用 spring-security-core 插件。以我的拙见,hasMany = [roles: UserRole]
是多余的,因为关联用户 - 角色已经在 UserRole
class.
中建模
这些是我的域对象
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()
上面总是 return 个结果,尽管我已经通过直接查看数据库验证应该有更多结果。传递给列表的 params
是正确的,但我尝试删除它们只是为了确定。我看不出上面有什么问题,有什么建议吗?
我也试过这个
roles{
role{
eq("authority","ROLE_ADMIN")
}
}
但是抛出异常:
Unknown column 'role_alias2_.authority' in 'where clause'
这对我有用:
def criteriaUsers = UserRole.createCriteria()
def users = criteriaUsers.listDistinct{
eq("role", role_admin)
}.user
旁注:从您的 classes 的命名法来看,您似乎正在使用 spring-security-core 插件。以我的拙见,hasMany = [roles: UserRole]
是多余的,因为关联用户 - 角色已经在 UserRole
class.