包含@OneToMany成员的删除顺序

时间:2010-11-10 10:43:37

标签: hibernate jpa h2 cascading-deletes

@Entity public class Organization {

@OneToMany 
List<A> Aobjects;


@OneToMany 
List<B> Bobjects;


@OneToMany 
List<C> Cobjects;

}

我在所有@OneToMany成员上都有@OnDelete注释。删除父对象时删除这些对象的顺序是什么。假设它是声明对象的顺序是否安全。

1 个答案:

答案 0 :(得分:1)

  

我在所有@OneToMany成员上都有@OnDelete注释。删除父对象时删除这些对象的顺序是什么。假设它是声明对象的顺序是否安全。

所以你在删除时使用 SQL级联删除而不是常规的Hibernate机制。由于您正在使用数据库机制,我很想说声明对象的顺序无关紧要(数据库根本不知道这个顺序),我只希望数据库能够正确处理事情。 / p>

如果您从注释生成模型,它可能会影响列的顺序,但是:

  • 如果这会产生任何影响,我会感到非常惊讶,这会让一切都变得非常脆弱,无法使用。
  • Hibernate / JPA没有说明列的顺序(因为这不重要,见上文)。
  

但是我遇到了一些问题,如果B inturn有一个外键引用A导致A在删除时失败

你应该在问题中提到,这是非常相关的 IMO。拿着我的答案,但正如我所说,我希望数据库引擎能够正确处理事情,数据库引擎具有所有必需的元数据。但我不是数据库专家,我不确定理论上说的是什么。

或许可以查看以下问题:

或询问有关理论的问题(以及给定引擎的实践)。