如何在Grails中实现"select sum()"

xai*_*ain 2 grails hql grails-orm

我有这样的关系:

class E {
  string name
  hasMany = [me:ME]
}

class M {
  float price
}

class ME {
 E e
 M m
 int quantity
}
Run Code Online (Sandbox Code Playgroud)

而且我讨厌迭代来实现这个目标:"获得ME中数量的总和乘以给定E的相应M的价格".

有关如何使用GORM/HQL实现它的任何提示?

提前致谢

Ted*_*eid 8

没有对此进行测试,但如果它不能开箱即用,它应该是关闭的:

def givenE = // the E we're looking for
def sum = ME.executeQuery("select sum(m.price) from ME as me join me.m as m where me.e = :e", [e: givenE])
println sum
Run Code Online (Sandbox Code Playgroud)

  • 这非常接近,但`executeQuery()`实际上返回一个列表/数组,其中sum为第一个元素.所以它是`def sum = ME.executeQuery("...")[0]`. (6认同)