我认为非常微不足道的东西需要帮助。
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连接表中定义的parent(用户)关系
任何帮助表示赞赏
最佳答案
您可以使用HQL查询来完成此操作,但是“大小”字段的名称存在一个小问题
(似乎是保留字)。如果将其重命名为“length”,“fileSize”等,那么它将起作用:
User.executeQuery(
'select sum(file.length) from User u join u.files file where u.id=:userId',
[userId: id])[0]
关于grails - 一对一求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6945941/