java – HQL意外AST节点:

我的代码无法注入下面的仓库.基于堆栈跟踪,似乎我的HQL语法无效,但我不知道我做错了什么.
@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);
}

堆栈跟踪:

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)

更新:我也收到此错误与此查询

@Query("UPDATE OrderEntity SET inProduction = :order.inProduction WHERE OrderEntity.id = :order.id")
void updateInProduction(@Param("order") OrderEntity order);

我更新了我的版本最新:

<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>

更新:我也收到这个错误

@Query("SELECT oe FROM OrderEntity oe WHERE oe.id = :orderProductEntity.id")
OrderEntity findBy(@Param("orderProductEntity") OrderProductEntity orderProductEntity);

解决方法

可悲的是,你不能做:order.inProduction(或者:foo.bar一般). Reference.

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...