Gorm equivalent for SQL



简单的一个 - Grails/Gorm 中获得与此 SQL 查询相同效果的最佳方法是什么:

选择年份(日期)作为销售年份, 月(日期)作为销售月, 总和(价格) 作为总销售额 从销售按年(日期)、月(日期)分组按年(日期)、月(日)排序

域类的 executeQuery 方法允许您运行 HQL 查询。

如果你看一些例子,你会注意到Hibernate查询语言记住了很多SQL,但是它是面向对象的。

来自 Grails 文档:

方法允许执行任意 HQL 查询。 HQL 查询可以返回域类实例或指定数组 查询选择单个字段或计算值时的数据。

因此,在您的情况下,查询将返回指定数据的数组,因为与域类不匹配,但您将能够迭代此数据。

假设您将销售表映射为销售域类:

class Sales {
  Date date
  BigDecimal price
  ...
  static mapping = {
    ...
  }
}

def result = Sales.executeQuery("SELECT YEAR(date) as SalesYear, MONTH(date) as SalesMonth, SUM(Price) AS TotalSales FROM Sales GROUP BY YEAR(date), MONTH(date) ORDER BY YEAR(date), MONTH(date)")
//iterate over the result
result.each { sales ->
  println sales[0] //year
  println sales[1] //month
  println sales[2] //total
}

最新更新