【发布时间】:2011-08-04 17:32:31
【问题描述】:
在我认为非常琐碎的事情上,我需要帮助。
class User {
String name
static hasMany = [files : File]
}
class File {
long size
}
现在,当我需要给定用户拥有的所有文件的总大小时,我会使用以下方法:
def user = User.get(id)
user.files.each(total+=it.size)
但它有多难看,当我确信它可以通过简单的 SQL 或 GORM/CRITERIA 的简单选择和查询来完成时
我尝试过类似 File.sumBySize..()
或者
def c = File.createCriteria()
def f = c.list{
eq("user", user) // What here ?
projections
{
sum("size")
}
}
我不知道如何指定未在 File 类中但在 Grails 连接表中定义的父(用户)关系
任何帮助表示赞赏
【问题讨论】:
-
为什么这么丑?我只是将该代码放在用户域中的便捷方法中。然后只需调用 userInstance.totalFileSize()
-
我不知道。我只是觉得这应该通过查询而不是循环收集来完成。我也很好奇如何以其他方式进行这项工作。我没有按标准做到这一点.. :(
标签: grails sum grails-orm