grails - 如何与一对多关系进行grails findAllBy

标签 grails findall

我与用户和任务之间存在一对多的关系,并且想要获取该用户的所有任务,但是我的查询未返回任何结果。这是我所拥有的:

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/

相关文章:

python - 正则表达式 - 如何选择其中包含 '-' 的单词?

python - 用于匹配 HTML 特定元素的正则表达式

grails - 无法解析Grails插件项目导入javax.websocket

ajax - Grails <g:remoteLink>多次渲染内容

Python - 正则表达式 - 匹配某些字符之间的字符

python - 使用 Beautiful Soup findall 提取单引号之间的文本

grails - 建立 war 时删除插件 View (gsp)

file - 获取我要上传的文件的路径

grails - Grails可搜索插件

python 如何计算html中开始和结束标签的数量