hibernate - Hibernate + Spring JPA:双向oneToMany触发插入查询两次
问题描述
在 Spring Boot 应用程序中,我有父子实体。父母有很多孩子。Parent 为子列表定义了 oneToMany,而 Child 为 Parent 对象定义了 manyToOne。当我尝试插入时,日志显示每次插入都会触发两次查询。
父类.java
public class Parent {
@javax.persistence.Id
@Column(name = "PARENT_ID")
//sequence generator
private Long parentId;
@OneToMany(mappedBy = "parent", cascade = CascadeType.PERSIST)
private List<Child> childs;
//getters and setters
}
子.java
public class Child {
//constructor
@javax.persistence.Id
@Column(name = "CHILD_ID")
//sequence generator
private Long childId;
@Column(name="NAME")
private String childName;
@ManyToOne
@JoinColumn(name="PARENT_ID")
Parent parent;
//getters and setters
}
存储库调用
Parent p = new Parent();
List<Child> childs = Arrays.asList(new Child("child1", p), new
Child("child2", p));
p.setChilds(childs);
//call to save entity
parentRepository.save(p);
当我执行此语句时,我看到 2 个 select 语句,2 个父级插入语句,4 个子级插入语句。我的期望是为父母插入 1 个,为孩子插入 2 个。
这是它应该是这样还是我做错了什么?
解决方案
推荐阅读
- python - 无法单击带有硒的按钮
- c++ - C++ 为什么我一调用 a->val 指针就将我带到某个奇怪的位置?
- python - 将特定文件移动到特定目录
- sql - Oracle SQL 加入和扩展
- angular - Angular,BsDatepicker 格式
- rally - 获取给定版本的 Rally 用户故事快照
- sql - 在 SQL Oracle 中逐行条件计数项目
- opengl - 几何着色器正在复制形状(处理中)
- node.js - 从 Kubernetes NGINX 入口控制器公开服务总是返回 502 Bad Gateway
- javascript - 如何使用 Firebase Functions 中的 firebase 实时数据库?(电报机器人)