Mryqu's Notes


  • 首页

  • 搜索
close

[JPA] CascadeType.REMOVE与orphanRemoval的区别

时间: 2013-10-26   |   分类: db+nosql     |   阅读: 44 字 ~1分钟

Cascading Remove

将引用字段标注为CascadeType.REMOVE(或包含REMOVE的CascadeType.ALL)表明删除操作将应该自动级联到由该字段引用的实体对象(多个实体对象可以由集合字段引用):

@Entity
class Employee {
     :
    @OneToOne(cascade=CascadeType.REMOVE)
    private Address address;
     :
}

Orphan Removal

JPA2额外支持一种更积极的删除级联模式,可以通过@OneToOne和@OneToMany注释的orphanRemoval元素设置:

@Entity
class Employee {
     :
    @OneToOne(orphanRemoval=true)
    private Address address;
     :
}

区别

两个设置的区别在于关系断开的响应。 例如,将地址字段设置为null或另一个Address对象时,不同设置的结果是不同。

  • 如果指定了 orphanRemoval = true,则断开关系的的Address实例将被自动删除。这对于清除没有所有者对象(例如Employee)引用的、不该存在的依赖对象(例如Address)很有用。
  • 如果仅指定 cascade = CascadeType.REMOVE,则不会执行上述自动删除操作,因为断开关系不是删除操作。

参考

Deleting JPA Entity Objects

标题:[JPA] CascadeType.REMOVE与orphanRemoval的区别
作者:mryqu
声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!

#jpa# #hibernate# #remove# #cascadetype# #orphanremoval#
[Eclipse] 确认Eclipse是32/64bit的方法
nohup命令笔记
  • 文章目录
  • 站点概览

Programmer & Architect

662 日志
27 分类
1472 标签
GitHub Twitter FB Page
    • Cascading Remove
    • Orphan Removal
    • 区别
    • 参考
© 2009 - 2023 Mryqu's Notes
Powered by - Hugo v0.120.4
Theme by - NexT
0%