Grails - 如何在不强制加载整个对象的情况下公开多对一关联属性的 id?
class Task {
User belongsTo
User createdBy
}
class User {
...
}
我可以从 Task 获取用户 ID,而不会导致整个用户对象的延迟加载吗?一般有没有办法做到这一点,还是会涉及每个类的自定义查询?这实际上涉及通过 BlazeDS 返回的 DTO 对象——我需要的只是 id,而不是关联的对象。
Grails - 如何在不强制加载整个对象的情况下公开多对一关联属性的 id?
class Task {
User belongsTo
User createdBy
}
class User {
...
}
我可以从 Task 获取用户 ID,而不会导致整个用户对象的延迟加载吗?一般有没有办法做到这一点,还是会涉及每个类的自定义查询?这实际上涉及通过 BlazeDS 返回的 DTO 对象——我需要的只是 id,而不是关联的对象。
显然,您需要使用魔术符号 belongsToId 和 createdById - 请参阅GRAILS-2570
Grails 默认启用了惰性关联,因此您不必担心所有链接对象的加载,除非您启用急切获取。此外,您可以使用命名查询或休眠标准预测:例如
def taskCriteria = Task.createCriteria()
def users = taskCriteria.list{//or get
projections {
property "id"
}
user{
eq("userName", "Joe")
}
}
以上将只为名为 Joe 的用户提取任务的 ID。