栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

删除元素时使用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)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/447646.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号