Java Hibernate ClassCastException Identinode无法强制转换为DotNode

Java Hibernate ClassCastException Identinode无法强制转换为DotNode,java,hibernate,jpa,jpql,Java,Hibernate,Jpa,Jpql,在使用JPQL执行简单的更新查询时,我遇到了一个ClassCastException 以下是异常跟踪: Caused by: java.lang.ClassCastException: org.hibernate.hql.internal.ast.tree.IdentNode cannot be cast to org.hibernate.hql.internal.ast.tree.DotNode at org.hibernate.hql.internal.ast.tree.Assignment

在使用JPQL执行简单的更新查询时,我遇到了一个ClassCastException

以下是异常跟踪:

Caused by: java.lang.ClassCastException: org.hibernate.hql.internal.ast.tree.IdentNode cannot be cast to org.hibernate.hql.internal.ast.tree.DotNode
at org.hibernate.hql.internal.ast.tree.AssignmentSpecification.<init>(AssignmentSpecification.java:71) [hibernate-core-4.2.0.SP1.jar:4.2.0.SP1]
at org.hibernate.hql.internal.ast.HqlSqlWalker.evaluateAssignment(HqlSqlWalker.java:1133) [hibernate-core-4.2.0.SP1.jar:4.2.0.SP1]
at org.hibernate.hql.internal.ast.HqlSqlWalker.evaluateAssignment(HqlSqlWalker.java:1127) [hibernate-core-4.2.0.SP1.jar:4.2.0.SP1]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.assignment(HqlSqlBaseWalker.java:1042) [hibernate-core-4.2.0.SP1.jar:4.2.0.SP1]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.setClause(HqlSqlBaseWalker.java:747) [hibernate-core-4.2.0.SP1.jar:4.2.0.SP1]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.updateStatement(HqlSqlBaseWalker.java:367) [hibernate-core-4.2.0.SP1.jar:4.2.0.SP1]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:255) [hibernate-core-4.2.0.SP1.jar:4.2.0.SP1]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:248) [hibernate-core-4.2.0.SP1.jar:4.2.0.SP1]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:183) [hibernate-core-4.2.0.SP1.jar:4.2.0.SP1]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136) [hibernate-core-4.2.0.SP1.jar:4.2.0.SP1]
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:105) [hibernate-core-4.2.0.SP1.jar:4.2.0.SP1]
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:80) [hibernate-core-4.2.0.SP1.jar:4.2.0.SP1]
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:168) [hibernate-core-4.2.0.SP1.jar:4.2.0.SP1]
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:221) [hibernate-core-4.2.0.SP1.jar:4.2.0.SP1]
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:199) [hibernate-core-4.2.0.SP1.jar:4.2.0.SP1]
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1777) [hibernate-core-4.2.0.SP1.jar:4.2.0.SP1]
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:291) [hibernate-entitymanager-4.2.0.SP1.jar:4.2.0.SP1]
at org.jboss.as.jpa.container.AbstractEntityManager.createQuery(AbstractEntityManager.java:425) [jboss-as-jpa-7.2.1.Final-redhat.jar:7.2.1.Final-redhat]
有人能解释一下这个例外的原因吗


提前感谢。

最近几天我遇到了同样的问题,我对JPQL进行了一些挖掘,发现JPQL更新查询无法更新关系

正如在

更新查询只能更新对象或其可嵌入对象的属性,不能更新其关系

我注意到
工作池
任务
可能有一种关系。所以可能是它造成了问题


希望有帮助。

向我们展示
任务
类plz。嘿,伊恩,我在hibernate中实现实体映射并尝试单向和双向联接,当我将单向更改为双向时,我没有将workpoolId更改为实际的对象工作池,这导致了问题。感谢您的帮助。
public Boolean changeWorkpool(final TaskWorkpoolChangeRequest taskWorkpoolChangeRequest) {
    final Query query = entityManager.createQuery("UPDATE Task SET workpoolId = :workpoolId"
        + " WHERE taskId= :taskId");
    query.setParameter("workpoolId", taskWorkpoolChangeRequest.getWorkpoolId())
        .setParameter("taskId", taskWorkpoolChangeRequest.getTaskId());
    return BooleanUtils.toBoolean(query.executeUpdate());
}