REMOVE和DELETE有什么区别?

时间:2009-09-25 10:06:50

标签: hibernate annotations cascade cascading-deletes

之间是否存在差异:

  • @Cascade(org.hibernate.annotations.CascadeType.REMOVE)和
  • @Cascade(org.hibernate.annotations.CascadeType.DELETE)?

1 个答案:

答案 0 :(得分:25)

没有区别;他们是同义词。

文档对此非常沉默,但是如果你看一下AnnotationBinder.getCascadeStrategy()源代码,两者都被翻译成Hibernate的“删除”级联类型。

两者都存在(我猜这里)的原因是因为Hibernate核心总是使用“DELETE”作为级联类型,但是JPA的CascadeType将“REMOVE”指定为常量。 Hibernate Annotations的CascadeType是Hibernate的JPA扩展的一部分,因此具有完整性/一致性。