gpt4 book ai didi

mysql - HQL 中的自引用更新

转载 作者:行者123 更新时间:2023-11-29 03:47:21 26 4
gpt4 key购买 nike

我在 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)失败并出现错误:

You can't specify target table 'ProjectFile' for update in FROM clause

问题似乎是在同一个上下文中查询要更新的表。有什么方法可以重写 HQL 查询以生成可以在 MySQL 中正确执行的 SQL 吗?另一种方法是创建一个中间表,这正是我要避免的。

最佳答案

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

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

关于mysql - HQL 中的自引用更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/433268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com