gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 10:33:34 26 4
gpt4 key购买 nike

我尝试了很多方法,最后我找到了一种方法,但它在 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}

请任何人都可以帮我解决这个问题。这真的很有帮助,如果您能给我背后的理由,我将不胜感激。

最佳答案

您不能将 ANY_VALUE() 与 HQL 结合使用。

但是你可以

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

关于java - 无法创建 sessionFactory 对象 : java. lang.IllegalStateException HQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46931178/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com