gpt4 book ai didi

java - 如何在 HQL 更新中使用加入?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:29:29 26 4
gpt4 key购买 nike

我知道如何在 SQL 更新中联接表,但我如何在 HQL 中执行此操作?

长话短说:我有一些项目是在运行中处理的。每次运行都作为一个 ID,我在项目和运行之间有一个多对多的关系(在一个额外的表中)。

现在我想设置在某个运行中使用的所有项目的状态。天真的方法看起来像这样:

update Items item
set item.statue = :done
where item.state = :new
and :run in item.runs

最后一行不起作用。 Hibernate 不能将带有 runs 的包变成可以在 where 子句中使用的东西。解决方案是什么?

最佳答案

尝试将 item.runs 更改为 elements(item.runs)。不过,我不确定它是否适用于更新,因为 HQL 更新中的连接通常需要在子选择中表达。因此,如果它不起作用,请尝试类似的方法:

update Items i1
set i1.statue = :done
where i1.state = :new
and i1 in (
select i2
from Items i2
where :run in elements(i2.runs)
)

关于java - 如何在 HQL 更新中使用加入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1531210/

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