java - hibernate :级联类型

标签 java hibernate jpa

让我有实体 A 和实体 B。实体 AB@OneToOne 关系。
我接下来要做什么:
如果我删除 A,那么 B 也必须被删除。
如果我删除 B,则 A 不会被删除。

我必须在哪个实体中设置

@OneToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})  

我必须设置在哪一边

@OneToOne(cascade = {CascadeType.ALL})  

?

最佳答案

从 A 到 B 的级联应该放在类 A 中引用 B 的字段上,从 B 到 A 的级联应该放在引用 的字段上>AB

public class A {
    @OneToOne(cascade = {CascadeType.ALL})
    B b;
}

应该在 A 类中,因为您希望每个操作都级联到 B

public class B {
    @OneToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
    A a;
}

应该在 B 类中,因为您只希望将某些操作级联到 A

关于java - hibernate :级联类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10551485/

相关文章:

java - 如何通过 Hibernate 将 H2 数据库项打印到 JavaFx SceneBuilder 准备的 TableView 上

java - 在 Hibernate/JPA 中将货币存储为 BigDecimal -decimal(19,2)

java - 优缺点 : Hibernate vs. EJB 3

java - 递归在该方法中如何工作?

java - 在java数组列表中搜索而不返回值

java - 使用正则表达式替换字符串中的最后一个单词(如果它的长度为 2 个字符)

java - 相同的值多次添加到数据库中

java - 如何编写Java代码让JPA/hibernate知道在哪里寻找配置文件?

java - 使用循环打印 int 值中的字符,每行输出具有所需数量的数字

java - Spring Data JPA 上的嵌套 @Transactional 注释行为