Mysql HQL中最大()的等价项

Mysql HQL中最大()的等价项,mysql,hql,Mysql,Hql,我正在努力寻找HQL中两个日期中最伟大的一个 在SQL中,这是有效的: SELECT ( GREATEST(a1.startDate, '2019-10-01T00:00:00Z') ) FROM Activity AS a1 WHERE a1.id = 66232 但HQL中的等效项给了我以下错误: java.lang.IllegalArgumentException: org.hibernate.QueryException: No data type for node: org.hibe

我正在努力寻找HQL中两个日期中最伟大的一个

在SQL中,这是有效的:

SELECT ( GREATEST(a1.startDate, '2019-10-01T00:00:00Z') ) FROM Activity AS a1 WHERE a1.id = 66232
但HQL中的等效项给了我以下错误:

java.lang.IllegalArgumentException: org.hibernate.QueryException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode 
 \-[METHOD_CALL] MethodNode: '('
    +-[METHOD_NAME] IdentNode: 'GREATEST' {originalText=GREATEST}
    \-[EXPR_LIST] SqlNode: 'exprList'
       +-[NAMED_PARAM] ParameterNode: '?' {name=param0, expectedType=null}
       \-[NAMED_PARAM] ParameterNode: '?' {name=param1, expectedType=null}
 [SELECT GREATEST(:param0,:param1) FROM xxx.xxx.xxx.Activity AS a1 WHERE a1.id = :param2]
    at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:133)
    at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:157)
    at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:164)
    ... 134 more
有没有办法在HQL中通过两个日期实现与MySQL最伟大()相同的功能

编辑:我也试过使用CASE当。。。然后。。。其他的结束,但最终出现以下错误:

java.lang.IllegalArgumentException: org.hibernate.QueryException: No data type for node: org.hibernate.hql.internal.ast.tree.SearchedCaseNode 
 \-[CASE] SearchedCaseNode: 'CASE'
    +-[WHEN] SqlNode: 'WHEN'
    |  +-[GT] BinaryLogicOperatorNode: '>'
    |  |  +-[NAMED_PARAM] ParameterNode: '?' {name=param0, expectedType=null}
    |  |  \-[NAMED_PARAM] ParameterNode: '?' {name=param1, expectedType=null}
    |  \-[NAMED_PARAM] ParameterNode: '?' {name=param2, expectedType=null}
    \-[ELSE] SqlNode: 'ELSE'
       \-[NAMED_PARAM] ParameterNode: '?' {name=param3, expectedType=null}
 [SELECT CASE WHEN :param0 > :param1 THEN :param2 ELSE :param3 END  FROM flowzone.model.activity.Activity AS a1 WHERE a1.id = :param4]
    at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:133)
    at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:157)
    at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:164)
    ... 138 more

MySQL手册将
GREATEST()
解释为

最大值(值1、值2等)

对于两个或多个参数,返回最大值(最大值) 争论

所以MySQL的
最大(value1,value2,…)
函数/语法应该与下面的MySQL语法相同

SELECT 
 MAX(greatest.v)
FROM (
  SELECT value1 AS v
  UNION ALL
  SELECT value2 AS v
  [, UNION ALL SELECT ...]
) AS greatest
不确定它是否是HQL证明,但可能是下面的查询

SELECT 
 MAX(alias.startDate)
FROM (
  SELECT a1.startDate FROM Activity AS a1 WHERE a1.id = 66232
  UNION ALL
  SELECT CAST('2019-10-01 00:00:00' AS DATETIME) AS startDate
) AS alias