我在HQL中有以下查询:
update ProjectFile pf1
set pf1.validUntil.id =123
where pf1 = (
select pf from ProjectVersion pv, ProjectFile as pf
where pf.validFrom.sequence <= pv.sequence
and pf.validUntil.sequence >= pv.sequence
and pf.state <> 12
and pf.projectVersion.project.id = 1
and pv.project.id = 1
and pv.id = 12
and pf.id not in (2,3,4)
)
Hibernate正确解析查询并生成SQL,但数据库(MySQL)失败并出现错误:
您无法在FROM子句
中为更新指定目标表'ProjectFile'
问题似乎是在同一上下文中查询要更新的表。有没有办法重写HQL查询以生成可以在MySQL中正确执行的SQL?另一种方法是创建一个中间表,这正是我想要避免的。
答案 0 :(得分:0)
我遇到了同样的问题,并在此处发布了一个问题:MySQL/SQL: Update with correlated subquery from the updated table itself。
要解决您的问题,您需要在UPDATE级别加入,请查看我的问题的答案。