我有嵌套查询创建HQL的更新实体CommitteeMembership或使用加入一个问题,我第一次尝试这样的查询:更新使用连接或nasted子查询的Hibernate(HQL)
update CommitteeMemberShip cms set cms.isDeleted=1
where cms.committeeCycle.committee.id=:committeeId
,但生成的SQL是错误如下:
update CommitteeMemberShip cross join set isDeleted=1 where committee_id=?
没有任何在此之后“交叉联接”使休眠抛出SQLGrammarException
之后,我改变了我的查询使用子查询:
update CommitteeMemberShip cms set cms.isDeleted=1
where cms.id in (select cmsIn.id from CommitteeMemberShip cmsIn inner join
cmsIn.committeeCycle cc inner join cc.committee c where c.id=:committeeId)
现在休眠抛出
java.sql.SQLException: You can't specify target table 'CommitteeMemberShip' for
update in FROM clause
任何一个有任何想法如何,我可以写在HQL此更新查询?
我认为这将做到第二次尝试的子查询有问题,它抛出s: java.sql.SQLException:您无法在FROM子句中指定目标表'CommitteeMemberShip'进行更新 –
我不确定,但试试这个 更新CommitteeMemberShip cms加入cms.id = cms2.id设置cms的CommitteeMemberShip cms2。 isDeleted = 1 其中cms2.committeeCycle.committee.id =:committeeId – Fanooos
您不能在实体名称或别名后面写入连接,它会抛出org.hibernate.hql.ast.QuerySyntaxException:期待“设置”,找到“连接” –