@Entity public class Organization {
@OneToMany
List<A> Aobjects;
@OneToMany
List<B> Bobjects;
@OneToMany
List<C> Cobjects;
}
我对所有 @OneToMany 成员都有 @OnDelete 注释。删除父对象时,删除这些对象的顺序是什么。假设它是声明对象的顺序是否安全。
@Entity public class Organization {
@OneToMany
List<A> Aobjects;
@OneToMany
List<B> Bobjects;
@OneToMany
List<C> Cobjects;
}
我对所有 @OneToMany 成员都有 @OnDelete 注释。删除父对象时,删除这些对象的顺序是什么。假设它是声明对象的顺序是否安全。
我对所有 @OneToMany 成员都有 @OnDelete 注释。删除父对象时,删除这些对象的顺序是什么。假设它是声明对象的顺序是否安全。
因此,您在删除时使用SQL 级联删除,而不是常规的 Hibernate 机制。由于您使用的是数据库机制,我很想说声明对象的顺序无关紧要(数据库根本不知道这个顺序),我只是希望数据库能够适当地处理事情。
如果您从注释生成模型,它可能会影响列的顺序,但是:
但是我遇到了一些问题,如果 B 反过来有一个对 A 的外键引用,这会导致 A 在删除时失败
您应该在问题中提到,这与IMO非常相关。对我的回答持保留态度,但正如我所说,我希望数据库引擎能够适当地处理事情,数据库引擎具有执行此操作所需的所有元数据。但我不是数据库专家,我不确定这个理论是怎么说的。
也许看看以下问题:
或者询问有关理论(以及给定引擎的实践)的问题。