如何在Grails中使用createCriteria进行多对多关系? [英] How to use createCriteria for many-to-many relation in Grails?

查看:147
本文介绍了如何在Grails中使用createCriteria进行多对多关系?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  class Account {
字符串名称
字符串唯一名称
static hasMany = [角色:角色]
}

类角色{
字符串名称
静态belongsTo = [帐户:帐户]
静态hasMany = [users:User]
}

class用户{
字符串名称
}

我从params.uniqueName收到Account的唯一名称。我想查找具有belongsTo帐户的所有用户列表。



我想使用criteria(),因为我想在分页中完成它。



我尝试像下面的代码,它的工作,但它不能做一个分页。

  def account = Account.findByUniqueName(params.uniqueName)
def roles = account.roles
[users:roles.users.flatten()。unique()]

我应该怎么做?

解决方案

<
添加给用户:

  static belongsTo = [角色:角色] 

并使用此标准:

  User.createCriteria()。listDistinct {
role {
account {
eq(uniqueName,params.uniqueName)
}
}
}


I have domain classes as below:

class Account {
    String name
    String uniqueName
    static hasMany = [roles:Role]
}

class Role {
    String name
    static belongsTo = [account:Account]
    static hasMany = [users: User]
}

class User {
    String name
}

I received Account's uniqueName from params.uniqueName. And I want to find all users list that has roles that belongsTo account.

I want to use criteria() because I want to do it in pagination.

I try like below code, it's work but it can't do a pagination.

def account = Account.findByUniqueName(params.uniqueName)
def roles = account.roles
[users : roles.users.flatten().unique()]

How should I do this?

解决方案

Try this one: add to user:

static belongsTo = [role:Role]

and use this criteria:

User.createCriteria().listDistinct {
   role{
    account{
     eq("uniqueName", params.uniqueName)
    }
   }
}

这篇关于如何在Grails中使用createCriteria进行多对多关系?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆