我在User和Task之间有一对多的关系,并希望获得该用户的所有任务,但我的查询没有返回任何结果。这就是我所拥有的:
def getByStatus(String findBy) {
// either get by Open/Closed or by All.
def sortPref = [sort: "deadline", order: "asc"]
def u = User.get(session.user.id) // session.user is a user domain object
if (findBy != "All")
tasks = Task.findAllByUserAndStatus(u, findBy, sortPref)
else
tasks = Task.findAllByUser(u, sortPref)
}
我也尝试过.findByUserIdAndStatus进行搜索,但收到错误消息说任务中没有UserId属性。如果我删除用户部分,那么我将完成所有任务。
答案 0 :(得分:1)
假设延迟加载没有问题(假设每个用户的任务数量不是很高),您可以直接根据用户(从1:M关系)获得所需的任务:
def getByStatus(String findBy) {
// either get by Open/Closed or by All.
def u = User.get(session.user.id) // session.user is a user domain object
def tasks = findBy == 'All' ? u.tasks.sort{it.deadline} :
u.tasks.findAll{it.status == findBy}.sort{it.deadline}
}
如果感兴趣,您可以在域类的映射中设置sort
。