首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DELETE_ORPHAN和DELETE有什么区别?

DELETE_ORPHAN和DELETE有什么区别?
EN

Stack Overflow用户
提问于 2009-09-04 06:41:22
回答 1查看 31.6K关注 0票数 26

以下是源代码:

代码语言:javascript
运行
复制
@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有什么区别?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-09-04 06:53:54

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

DELETE_ORPHAN意味着如果从一个相关的一对多集合中移除一个实体,那么不仅要将其与当前实体解除关联,还要将其删除。

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

在房子的房间列表上删除意味着如果你删除房子,那么删除它的所有房间。

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

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

聚合的一个例子是Class (parent) to Student (child)。删除班级,学生仍然存在(毫无疑问,在其他班级)。将学生从班级中删除通常并不意味着删除他或她。

票数 67
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1377585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档