无法创建sessionFactory对象:java.lang.IllegalStateException HQL

时间:2017-10-25 11:25:43

标签: java mysql sql hibernate hql

我已经在很多方面尝试过这个,最后我发现了一种方法,但是在HQL之后它不适用于linux环境

SELECT es.eventId as eventId, MAX(es.raisedTimestamp) as raisedTimestamp, es.id as id, es.isReset as isReset FROM EsEvent es WHERE es.isReset=1 GROUP BY es.eventId ORDER BY es.raisedTimestamp DESC

这将以mysql中启用的ONLY_FULL_GROUP_BY模式结束。

所以我将ANY_VALUE()函数添加到我的hql下面就是那个。

SELECT es.eventId as eventId, MAX(es.raisedTimestamp) as raisedTimestamp, ANY_VALUE(es.id) as id, es.isReset as isReset FROM EsEvent es WHERE es.isReset=1 GROUP BY es.eventId ORDER BY ANY_VALUE(es.raisedTimestamp) DESC

在这种情况下,它最终会出现像这样的

的HQL异常
Failed to create sessionFactory object: java.lang.IllegalStateException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode +-[METHOD_CALL] MethodNode: '('|  +-[METHOD_NAME] IdentNode: 'ANY_VALUE' {originalText=ANY_VALUE}|  \-[EXPR_LIST] SqlNode: 'exprList'|     \-[DOT] DotNode:'esevent0_.ID'{propertyName=id,dereferenceType=PRIMITIVE,getPropertyPath=id,path=es.id,tableAlias=esevent0_,className=org.reactor.monitoring.model.entity.EsEvent,classAlias=es}|        +-[ALIAS_REF] IdentNode: 'esevent0_.ID' {alias=es, className=org.reactor.monitoring.model.entity.EsEvent, tableAlias=esevent0_} |        \-[IDENT] IdentNode: 'id' {originalText=id}

请任何人都可以帮我解决这个问题。它真的很有帮助,如果你能给我理由,我们非常感激。

1 个答案:

答案 0 :(得分:1)

您不能将ANY_VALUE()与HQL一起使用。

但你可以

  1. 将其与原生SQL https://www.mkyong.com/hibernate/hibernate-native-sql-queries-examples/
  2. 一起使用
  3. ANY_VALUE()作为自定义函数添加到HQL How to use native sql function with HQL query?