具有和max的grails中的HQL生成意外的AST节点

时间:2014-01-29 15:07:15

标签: hibernate grails hql gorm

我想做一个非常简单的查询。

在SQL中是:

select * from table group by portfolio_id HAVING max(date)

在grails中我做了类似的事情:

def result = Table.executeQuery("from Table group by portfolio having max(date)")

但是我得到了一个意外的AST节点

我不知道,我读了一些文档,但我仍然无法得到它,为什么它不起作用。

更多细节中的错误消息

| Error 2014-01-29 17:20:15,400 [http-bio-8080-exec-8] ERROR hql.PARSER - <AST>:1:97: unexpected AST node: max 

| Error 2014-01-29 17:20:15,426 [http-bio-8080-exec-8] ERROR errors.GrailsExceptionResolver - QuerySyntaxException occurred when processing request: [GET] /Lumen/Controller unexpected AST node: max near line 1, column 97 [select portfolio.id,date from com.gwm.lumen.Table group by portfolio.id having max(date)].

Stacktrace如下:

Message: unexpected AST node: max near line 1, column 97 [select portfolio.id,date from com.gwm.lumen.Table group by portfolio.id having max(date)]

1 个答案:

答案 0 :(得分:1)

如果底层数据库是MySQL,则不能在max()子句中使用聚合函数[本例{having]。

  

有和的SQL函数和聚合函数是允许的   如果基础数据库支持子句,则按子句排序   (即不在MySQL中)。

@摘录取自Hibernate Docs on group by clause

我不确定最新的MySQL方言是否支持它。