1
@Entity public class Organization {

@OneToMany 
List<A> Aobjects;


@OneToMany 
List<B> Bobjects;


@OneToMany 
List<C> Cobjects;

}

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

4

1 回答 1

1

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

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

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

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

但是我遇到了一些问题,如果 B 反过来有一个对 A 的外键引用,这会导致 A 在删除时失败

您应该在问题中提到,这与IMO非常相关。对我的回答持保留态度,但正如我所说,我希望数据库引擎能够适当地处理事情,数据库引擎具有执行此操作所需的所有元数据。但我不是数据库专家,我不确定这个理论是怎么说的。

也许看看以下问题:

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

于 2010-11-11T09:17:28.383 回答