删除元素时使用JoinTable和OrderColumn在Hibernate单向OneToMany映射中违反约束

删除元素时使用JoinTable和OrderColumn在Hibernate单向OneToMany映射中违反约束,第1张

删除元素时使用JoinTable和OrderColumn在Hibernate单向OneToMany映射中违反约束

您的映射是完全有效的,并且可以作为JPA 2.0实现与Eclipselink一起使用(

Fetch
当然没有注释),但是对于Hibernate而言确实失败。

这是带有hibernate的DDL:

create table foo_bar_map (foo_id bigint not null, bar_id bigint not null, order_index integer not null, primary key (foo_id, order_index), unique (bar_id))alter table foo_bar_map add constraint FK14F1CB7FA042E82 foreign key (bar_id) references Bar4022509alter table foo_bar_map add constraint FK14F1CB7B6DBCCDC foreign key (foo_id) references Foo4022509

所以我们可以说

Foo#1
保持了与列表
Bar#1
Bar#2
Bar#3
连接表包括:

foo_id | bar_id | order_index     1 |      1 |1     1 |      2 |2     1 |      3 |3

删除时,说出列表中的第一项,Hibernate首先

delete
进入连接表的最后一行(WTF?):

foo_id | bar_id | order_index     1 |      1 |1     1 |      2 |2

然后尝试连接表中

update
bar_id
列而不是
order_index
(WTF !?),以反映列表中项目的“新”顺序。首先(示意):

foo_id | bar_id | order_index     1 |      2 |1     1 |      2 |2

下一步将导致:

foo_id | bar_id | order_index     1 |      2 |1     1 |      3 |2

显然,由于的限制,这种方法听起来不正确, 也不起作用
。更笼统地说,为什么Hibernate搞砸了而不是更新该列呢?

unique``bar_id``bar_id``order_index

我认为这是一个Hibernate错误(报告为
HHH-5694
,现在参见HHH-1268)。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5168750.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-18
下一篇 2022-11-18

发表评论

登录后才能评论

评论列表(0条)

保存