HQL中的自引用更新

时间:2009-01-11 17:34:10

标签: mysql hibernate hql mysql-error-1093

我在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?另一种方法是创建一个中间表,这正是我想要避免的。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,并在此处发布了一个问题:MySQL/SQL: Update with correlated subquery from the updated table itself

要解决您的问题,您需要在UPDATE级别加入,请查看我的问题的答案。