我与用户和任务之间存在一对多的关系,并且想要获取该用户的所有任务,但是我的查询未返回任何结果。这是我所拥有的:
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属性。如果删除用户部分,则可以完成所有任务。
最佳答案
假设延迟加载没有问题(假设每个用户的任务数量不是很高),则可以基于用户(从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
。
关于grails - 如何与一对多关系进行grails findAllBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20669893/