java - Hibernate - 删除子项时如何从父项中删除实体
问题描述
以下代码不起作用
User user = new User();
Project project = new Project();
project.setOwner(user);
projectRepository.delete(project);
assertEquals(0, user.getProjects().size());
我应该如何配置关联以实现这一目标?
目前我有
public class User {
@OneToMany(mappedBy = "owner")
private Set<Project> projects = new HashSet<Project>();
}
public class Project {
@ManyToOne
private User owner;
}
测试返回
java.lang.AssertionError:
Expected :0
Actual :1
解决方案
在一对多的关系中,您应该从父级级联删除到子级,而不是相反。如果您有 3 个属于同一用户的项目,您的场景会发生什么?您删除了其中一个项目,但您不能删除用户,对吗?因为他还有2个项目。
查看这篇关于这个主题的好文章: https ://vladmihalcea.com/a-beginners-guide-to-jpa-and-hibernate-cascade-types/(作者实际上在这里回答了很多关于hibenrate的问题)
推荐阅读
- r - 带有 stat="identity" 的 geom_count 不起作用
- json - JSONDecoder 从字符串中的字符串中提取数据?
- visual-studio-code - 有没有办法收听粘贴事件?
- javascript - 无法在“SourceBuffer”上执行“appendBuffer”:此 SourceBuffer 已从父媒体源中删除
- excel - VBA在公式中弄乱了我的结构化参考
- c++ - 如何获得对称矩阵?
- mysql - 在 MySQL 中构建表的正确方法,以确保 2 个用户检查了文档?
- swiftui - 如何在 SwiftUI 中组合两个具有不同格式的文本视图
- rest - 使用相同长 url 的 v3 和 v4 api 调用之间的略微缩短的 url
- javascript - 只有第一行数据库代码正在返回