我想我误解了@ManyToOne人关系中层叠的含义.

本案:

public class User {

   @OneToMany(fetch = FetchType.EAGER)
   protected Set<Address> userAddresses;

}

public class Address {

   @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
   protected User addressOwner;

}

cascade = CascadeType.ALL是什么意思?例如,如果我从数据库中删除某个地址,那么添加cascade = CascadeType.ALL这一事实对我的数据(我猜是User)有什么影响呢?

推荐答案

CascadeType.ALL的含义是持久性将把所有EntityManager个操作(PERSIST, REMOVE, REFRESH, MERGE, DETACH)传播(级联)到相关实体.

在你的情况下,这似乎是个坏主意,因为删除Address会导致删除相关的User.由于一个用户可以有多个地址,其他地址将成为孤立地址.然而,相反的情况(注释User)是有意义的——如果一个地址只属于一个用户,那么在删除该用户时,传播删除所有属于该用户的地址是安全的.

顺便说一句:您可能想在User中添加一个mappedBy="addressOwner"属性,以向持久性提供程序发出信号,表明join列应该在ADDRESS表中.

Java相关问答推荐

AWS Java SDK 2(putTarget)+ MinIO:不支持您提供的授权机制.请使用AWS 4-HMAC-SHA 256

使用hibiter中特定字段的where条款自定义映射

如何从片段请求数据到活动?在主要活动中单击按钮请求数据?

如何为具有多对多关系的实体的给定SQL查询构建JPA规范?

是否保证在事务性块的末尾标记违反约束?

Java FX中的河内之塔游戏-在游戏完全解决之前什么都不会显示

为什么一个Test的instance?& gt;在构造函数中接受非空对象?

Spring Boot&;Docker:无法执行目标org.springframework.boot:spring-boot-maven-plugin:3.2.0:build-image

二进制数据的未知编码/序列化

为什么在下面的Java泛型方法中没有类型限制?

通过Java列表中的某些字段搜索值

如果第一位数字和最后一位数字相差超过一位,您将如何获得随机数?

在JDK Flight Recorder中只记录单个线程

如何在IntelliJ IDEA的Build.sbt中添加外部JAR文件?

我的代码是线程安全的吗?[Java、CAS、转账]

Java KeyListener不工作或被添加

无法在Java中获取ElastiCache的AWS CloudWatch指标

如何修复Spring Boot应用程序中的RestDocumentationGenerationException:java.io.FileNotFoundException:/curl-request.adoc(只读文件系统)?

PhantomReference无法访问时会发生什么?

在输入端没有可行的替代方案'; Select *';