Grails - 如何在不强制加载整个对象的情况下公开多对一关联属性的id?
class Task {
User belongsTo
User createdBy
}
class User {
...
}
我是否可以从Task获取用户ID而不会导致延迟加载整个User对象?有没有办法一般地执行此操作,还是会涉及每个类的自定义查询?这实际上涉及DTO对象通过BlazeDS返回 - 我需要的只是id,而不是相关对象。
答案 0 :(得分:0)
默认情况下,Grails启用了延迟关联,因此您不必担心加载所有链接对象,除非您启用了预先获取。您还可以使用命名查询或休眠标准投影: e.g。
def taskCriteria = Task.createCriteria()
def users = taskCriteria.list{//or get
projections {
property "id"
}
user{
eq("userName", "Joe")
}
}
上面只会为名为Joe的用户提取任务的ID。
答案 1 :(得分:0)
显然你需要使用魔术符号belongsToId和createdById - 见GRAILS-2570