gpt4 book ai didi

java - hibernate ;高质量语言;为什么删除查询不起作用,但选择呢?

转载 作者:搜寻专家 更新时间:2023-10-31 19:50:58 25 4
gpt4 key购买 nike

我想从表中删除某些记录。这些记录在其他表中有一些子记录。

为了能够删除主记录,我必须先删除子记录。

这是使用的 HQL 示例:

delete from ItineraryBooking ib where ib.booking.user.id = :paramId

基本上,这应该删除所有 ItineraryBookings(单独表中的记录),这些都连接到 Booking 表。 Booking 表可以与 User 表连接。

奇怪的是,当您将上面的内容更改为:

from ItineraryBooking ib where ib.booking.user.id = :paramId

然后执行一个 Query.list(),它会工作得很好。

每当我想执行 delete 变体时,Hibernate 似乎都会生成一个奇怪的 delete 语句。我的HQL错了吗?还是 Hibernate 的怪癖?

最佳答案

来自hibernate manual :

No joins, either implicit or explicit, can be specified in a bulk HQL query. Sub-queries can be used in the where-clause, where the subqueries themselves may contain joins.

你的 ib.booking.user.id 子句对我来说像是一个连接。我不知道 Hibernate 是否主动拒绝加入 delete 语句,或者只是默默地把它弄错了。

删除子记录的更好方法是使用 cascading deletes .

关于java - hibernate ;高质量语言;为什么删除查询不起作用,但选择呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2102135/

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