IT序号网

grails之等同于SQL的Gorm

zengkefu 2026年04月21日 编程语言 61 0

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

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

请您参考如下方法:

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

如果看一些示例,您会注意到Hibernate Query Language记住很多SQL,但是它是面向对象的。

从Grails文档中:

The executeQuery method allows the execution of arbitrary HQL queries. HQL queries can return domain class instances, or Arrays of specified data when the query selects individual fields or calculated values.



因此,在您的情况下,由于与域类不匹配,查询将返回指定数据的数组,但是您可以迭代该数据。

假设您将销售表映射为“销售”域类:
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 
} 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!