如果我有一个客户端域类,并且该客户端有多个课程。我如何找到我正在寻找的课程?例如:
class Client {
String name
static hasMany = [courses:Course]
}
class Course {
String name
static belongsTo = [client:Client]
}
def client = Client.get(1)
我想在该课程关系中“找到”或“搜索”。也许是这样的:
client.courses.find(name:'Whatever')
有没有办法用Grails做到这一点?
答案 0 :(得分:29)
如果您正在使用二级缓存并为此关联配置了它,则可能需要遍历该集合(如果该关联位于缓存中,这将为您节省数据库查询。)
以下是使用聪明的Groovy Collection API:
的示例def course = client.courses.find { it.name == "whatever" }
重要提示:如果您决定采用此方法,请务必courses
{{1}} {}},这样您就不会遇到configure eager / batch fetching。
答案 1 :(得分:12)
一种方法是使用动态查找器方法:
Courses.findAllByClientAndName(client, 'whatever')
这将使所有客户的课程名为“无论什么”。
Grails也有few other ways来完成此任务。