java - JPA CascadeType.ALL 不删除子记录

标签 java jpa

考虑这个用例。

class Category {
   @OneToMany(cascade=CascadeType.ALL)
   List<Application> applications = new ArrayList<Application>();
}

class Application {
   @ManyToOne
   Category category;       
}

我了解到,在这种情况下,当类别被删除时,应用程序也将被删除。但是谁负责连接表呢?为关系生成的 Category_Application 表。

最佳答案

无论级联如何,都应始终删除连接表行。

对于拥有(非mappedBy)端的双向ManyToMany 将删除行。

因为你有一个 ManyToOne 返回,看来你应该使用一个 mappedBy,而不是一个连接表。

问题是它们没有被删除,还是您在删除它们之前收到约束错误?当您调用 remove() 时,还要确保您的集合不为空。在调用 remove 之前也尝试从集合中删除所有内容。

关于java - JPA CascadeType.ALL 不删除子记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6106750/

相关文章:

java - Eclipselink 未检测到脏实体

java - Mockito findByIdOrNull 问题

jpa - 是否支持使用 JPA 进行模式迁移?

java - 使用maven和eclipse生成元模型类(JPA,Maven,Eclipse)

java - 如何阻止 netty bootstrap 监听和接受新连接

java - 为 ZonedDateTime 编写 xstream 转换器

java - 使用外部 JS 文件更改 Servlet 的 HTML 输出

java - 使用 Spring JPA 时在@AllArgsConstructor 中使用 id 字段是否正确?

java - QueryDSL JPA 函数

java - 如何使 JAX-WS web 服务响应 JSESSIONID( session ID)