如果我有一个客户端域类,并且该客户端有多个课程.我如何找到我正在寻找的课程?例如:
class Client {
String name
static hasMany = [courses:Course]
}
class Course {
String name
static belongsTo = [client:Client]
}
def client = Client.get(1)
Run Code Online (Sandbox Code Playgroud)
我想在那个课程关系中"找到"或"搜索".也许是这样的:
client.courses.find(name:'Whatever')
Run Code Online (Sandbox Code Playgroud)
有没有办法用Grails做到这一点?
Kim*_*ble 29
如果您正在使用二级缓存并为此关联配置了它,则可能需要迭代该集合(如果关联位于缓存中,这将为您节省数据库查询).
以下是使用聪明的Groovy Collection API的示例:
def course = client.courses.find { it.name == "whatever" }
Run Code Online (Sandbox Code Playgroud)
重要提示:如果您决定采用此方法,请确保配置eager/batch fetching,courses这样您就不会遇到n + 1问题.
ata*_*lor 12
一种方法是使用动态查找器方法:
Courses.findAllByClientAndName(client, 'whatever')
Run Code Online (Sandbox Code Playgroud)
这将使所有客户的课程命名为"无论什么".
Grails还有其他几种方法可以实现这一目标.
| 归档时间: |
|
| 查看次数: |
22307 次 |
| 最近记录: |