2013-12-18 57 views
0

我有一个用户和任务之间的一对多关系,并希望获得该用户的所有任务,但我的查询没有返回任何结果。下面是我有:如何做一个grails findAllBy与一对多的关系

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属性。如果我删除用户部分,那么我会完成所有任务。

+3

请出示您的用户和任务模型 –

+0

状态只是一个字符串? – Gregg

回答

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

+0

谢谢!这很好用!我将研究将这种排序应用于域类的映射。 –

相关问题