Grails Criteria - 列出内容

时间:2015-04-28 15:26:18

标签: grails criteria

这些是我的域名对象

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子句'

1 个答案:

答案 0 :(得分:1)

这对我有用:

def criteriaUsers = UserRole.createCriteria()
def users =  criteriaUsers.listDistinct{
                eq("role", role_admin)
             }.user

旁注:从您的类的命名法看起来,您使用的是spring-security-core插件。在我看来,hasMany = [roles: UserRole]是多余的,因为关联用户 - 角色已经在UserRole类中建模。

相关问题