gpt4 book ai didi

hibernate - DELETE_ORPHAN 和 DELETE 有什么区别?

转载 作者:行者123 更新时间:2023-12-02 19:22:45 25 4
gpt4 key购买 nike

这是源代码:

@OneToOne(fetch = FetchType.LAZY)
@Cascade({SAVE_UPDATE, EVICT, DELETE})
@JoinColumn(name = "A_ID", nullable = true)
private A a;

@OneToMany
@Cascade({SAVE_UPDATE, EVICT, DELETE, DELETE_ORPHAN})
@JoinColumn(name = "B_ID")
private List<B> bList;

DELETE_ORPHAN 和 DELETE 之间有什么区别?

最佳答案

级联删除表示如果删除该实体,则删除相关的一个或多个实体。

DELETE_ORPHAN 表示如果从相关的一对多集合中删除一个实体,那么不仅会解除它与当前实体的关联,还会将其删除。

举个例子,考虑两个实体:House 和 Room。

House 上的房间列表中的 DELETE 表示如果您删除 House,则删除其所有房间。

House 的房间列表中的 DELETE_ORPHAN 表示如果您从该集合中删除房间,请将其完全删除。没有它,房间仍然存在,但不会附加到任何东西(因此是“孤儿”)。

在 UML 和 OO 建模术语中,这基本上是组合和聚合之间的区别。 House->Room 关系是组合的一个示例。 Room 是 House 的一部分,并不独立存在。

聚合的一个示例是类(class)(父级)到学生(子级)。删除类(class),学生仍然存在(无疑在其他类(class)中)。从类(class)中删除学生通常并不意味着删除他或她。

关于hibernate - DELETE_ORPHAN 和 DELETE 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1377585/

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