Java 没有节点的数据类型:org.hibernate.hql.internal.ast.tree.MethodNode
我有一个带有此查询的SpringBoot应用程序Java 没有节点的数据类型:org.hibernate.hql.internal.ast.tree.MethodNode,java,hibernate,jpa,spring-data,spring-data-jpa,Java,Hibernate,Jpa,Spring Data,Spring Data Jpa,我有一个带有此查询的SpringBoot应用程序 @Transactional @Modifying @Query("update HotelDailyPrice cdp set cdp.price = (select nvl (avg (cp.price),0) " + "from HotelPrice cp where cp.hotel = ?1 and cp.updateDate > ?2), cdp.day = ?3 where cdp.
@Transactional
@Modifying
@Query("update HotelDailyPrice cdp set cdp.price = (select nvl (avg (cp.price),0) "
+ "from HotelPrice cp where cp.hotel = ?1 and cp.updateDate > ?2), cdp.day = ?3 where cdp.hotel = ?1 ")
void updateDailyAveragePrice (Hotel Hotel, Date dayDate, String dayDateString);
但我有一个错误:
Caused by: java.lang.IllegalStateException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode
\-[METHOD_CALL] MethodNode: '('
+-[METHOD_NAME] IdentNode: 'nvl' {originalText=nvl}
\-[EXPR_LIST] SqlNode: 'exprList'
+-[AGGREGATE] AggregateNode: 'avg'
| \-[DOT] DotNode: 'hotel1_.price' {propertyName=price,dereferenceType=PRIMITIVE,getPropertyPath=price,path=cp.price,tableAlias=hotel1_,className=com.hotels
.backend.persistence.domain.backend.HotelPrice,classAlias=cp}
| +-[ALIAS_REF] IdentNode: 'hotel1_.id' {alias=cp, className=com.hotels.backend.persistence.domain.backend.HotelPrice, tableAlias=hotel1_}
| \-[IDENT] IdentNode: 'price' {originalText=price}
\-[NUM_INT] LiteralNode: '0'
在查询中添加nvl后会出现此问题您需要引用HQL的类变量,而不是sql查询的列 请参阅已回答的问题
使用凝聚而不是nvl。。。这是jpql等效函数您的意思是因为“NVL”在jpql中不是有效函数?正如JPA规范所说