无法创建 sessionFactory 对象:java.lang.IllegalStateException HQL
Failed to create sessionFactory object: java.lang.IllegalStateException 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 模式结束。
所以我在下面的 hql 中添加了 ANY_VALUE() 函数。
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}
请任何人帮助我解决这个问题。这真的很有帮助,如果你能告诉我背后的原因,我将不胜感激。
您不能将 ANY_VALUE()
与 HQL 一起使用。
但是你可以
- 与原生一起使用 SQL https://www.mkyong.com/hibernate/hibernate-native-sql-queries-examples/
- 添加
ANY_VALUE()
作为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 模式结束。
所以我在下面的 hql 中添加了 ANY_VALUE() 函数。
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}
请任何人帮助我解决这个问题。这真的很有帮助,如果你能告诉我背后的原因,我将不胜感激。
您不能将 ANY_VALUE()
与 HQL 一起使用。
但是你可以
- 与原生一起使用 SQL https://www.mkyong.com/hibernate/hibernate-native-sql-queries-examples/
- 添加
ANY_VALUE()
作为HQL的自定义函数