Java – HQL unexpected ast node:
•
Java
My code cannot be injected into the following repository Based on stack trace, it seems that my HQL syntax is invalid, but I don't know what I did wrong
@Repository
public interface JobSetRepository extends JpaRepository<JobSetEntity,Integer> {
@Modifying
@Transactional
@Query("UPDATE JobSetEntity SET workstation = :workstation,workflowProcess = :workstation.workflowProcess WHERE id = :jobSet.id")
public Boolean updateWorkstation(@Param("jobSet") JobSetEntity jobSet,@Param("workstation") Workstation workstation);
@Modifying
@Transactional
@Query("UPDATE JobSetEntity SET workflowProcess = :workflowProcess,workstation = null WHERE id = :jobSet.id")
public Boolean updateWorkflowProcess(@Param("jobSet") JobSetEntity jobSet,@Param("workflowProcess") WorkflowProcess workflowProcess);
}
Stack trace:
12:57:58,692 ERROR main org.hibernate.hql.internal.ast.ErrorCounter:54 - <AST>:1:111: unexpected AST node: :
12:57:58,693 ERROR main org.hibernate.hql.internal.ast.ErrorCounter:50 - <AST>:1:111: unexpected AST node: :
<AST>:1:111: unexpected AST node: :
at org.hibernate.hql.internal.antlr.HqlsqlBaseWalker.addrExpr(HqlsqlBaseWalker.java:4680)
at org.hibernate.hql.internal.antlr.HqlsqlBaseWalker.addrExprLhs(HqlsqlBaseWalker.java:5114)
at org.hibernate.hql.internal.antlr.HqlsqlBaseWalker.addrExpr(HqlsqlBaseWalker.java:4575)
at org.hibernate.hql.internal.antlr.HqlsqlBaseWalker.expr(HqlsqlBaseWalker.java:1260)
at org.hibernate.hql.internal.antlr.HqlsqlBaseWalker.newValue(HqlsqlBaseWalker.java:1211)
at org.hibernate.hql.internal.antlr.HqlsqlBaseWalker.assignment(HqlsqlBaseWalker.java:1033)
at org.hibernate.hql.internal.antlr.HqlsqlBaseWalker.setClause(HqlsqlBaseWalker.java:747)
at org.hibernate.hql.internal.antlr.HqlsqlBaseWalker.updateStatement(HqlsqlBaseWalker.java:367)
at org.hibernate.hql.internal.antlr.HqlsqlBaseWalker.statement(HqlsqlBaseWalker.java:255)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:248)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:183)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:105)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
Update: I also received this error with this query:
@Query("UPDATE OrderEntity SET inProduction = :order.inProduction WHERE OrderEntity.id = :order.id")
void updateInProduction(@Param("order") OrderEntity order);
I updated my latest version:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.5.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.2.5.Final</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.3.4.RELEASE</version>
</dependency>
Update: I also received this error:
@Query("SELECT oe FROM OrderEntity oe WHERE oe.id = :orderProductEntity.id")
OrderEntity findBy(@Param("orderProductEntity") OrderProductEntity orderProductEntity);
Solution
Sadly, you can't do: order In production (or foo.bar) Reference.
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
