我的代码无法注入下面的存储库。根据堆栈跟踪,我的HQL语法似乎是无效的,但我不确定我做错了什么。
@Repository
public interface JobSetRepository extends JpaRepository {
@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);
}堆栈跟踪:
12:57:58,692 ERROR main org.hibernate.hql.internal.ast.ErrorCounter:54 - :1:111: unexpected AST node: :
12:57:58,693 ERROR main org.hibernate.hql.internal.ast.ErrorCounter:50 - :1:111: unexpected AST node: :
: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.(HQLQueryPlan.java:105)
at org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:80)更新:在这个查询中,我也得到了这个错误:
@Query("UPDATE OrderEntity SET inProduction = :order.inProduction WHERE OrderEntity.id = :order.id")
void updateInProduction(@Param("order") OrderEntity order);我将我的版本更新到了最新版本:
org.hibernate
hibernate-core
4.2.5.Final
org.hibernate
hibernate-entitymanager
4.2.5.Final
org.springframework.data
spring-data-jpa
1.3.4.RELEASE更新:我也收到了这个错误:
@Query("SELECT oe FROM OrderEntity oe WHERE oe.id = :orderProductEntity.id")
OrderEntity findBy(@Param("orderProductEntity") OrderProductEntity orderProductEntity);发布于 2013-09-25 22:19:58
遗憾的是,您不能这样做:order.inProduction(或:foo.bar通常)。Reference..。
发布于 2013-09-26 20:40:05
当您使用此命令时:
:workstation.workflowProcess您正在定义一个参数,因此不能使用该表示法,但必须使用变量,如下所示:
:workstation
:workflowProcess以此类推
发布于 2015-09-15 15:34:54
实际上错误在NamedQuery语法中,你不能这样做
workflowProcess = :workstation.workflowProcess
相反,它应该像这样
workflowProcess =:工作流流程
https://stackoverflow.com/questions/18964857
复制相似问题