【发布时间】:2019-03-14 21:28:08
【问题描述】:
我无法弄清楚如何简单地将子实体与现有父实体相关联。
@Entity
@Table(name = "parent")
@Document(indexName = "parent")
public class Parent implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;
@Column(name = "name")
private String name;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(unique = true)
private Child child;
//getters, setters
}
孩子
@Entity
@Table(name = "child")
@Document(indexName = "child")
public class Child implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;
@Column(name = "name")
private String name;
@OneToOne(mappedBy = "child")
private Parent parent;
//getters, setters
}
这是两个基本模型。
父级已存在于数据库中,我想添加一个新的子级。
Child childEntity = childRepository.save(child);
子元素填充如下: child.json
{
"name": "smallChild",
"parent": { "id" : "1" }
}
我希望能够拯救孩子,并让它自动与父母建立关系。
我做了一些非常讨厌的代码......
- 为 ID 保存没有父母的孩子
- 按 ID 查询数据库的父代
- 将子实体设置为父实体
- 用新的孩子保存父母
- 将父实体设置为子实体
- 用父级重新保存子级。
这最终是 6 次数据库查询。
我尝试从 lynda.com 观看一些课程视频,但没有帮助。
谢谢!
【问题讨论】:
标签: java spring hibernate spring-boot jpa