如何在Grails中使用createCriteria进行多对多关系? [英] How to use createCriteria for many-to-many relation in Grails?
本文介绍了如何在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屋!
查看全文