【发布时间】:2020-07-28 21:14:43
【问题描述】:
我在SO和几篇文章上寻找答案,但我认为很遗憾错过了明确的解释,所以我决定问。
假设我们有两个实体(盒子包含几个项目):
@Entity
@Table(name = "box")
class Box
{
@Id
private Long id;
@OneToMany(mappedBy = "box")
private List<Item> items = new LinkedList<>();
public void addItem(Item item)
{
items.add(item);
item.setBox(this);
}
// setters, getters, delete synchronize method
}
@Entity
@Table(name = "item")
class Item
{
@Id
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "box_id")
private Box box;
// setters getters
}
我应该坚持关系的哪一边?
- 这是否取决于关系的拥有方?
- 它是否取决于级联类型和拥有方没有共同点?
- 将
CascadeType.PERSIST置于Box实体中,然后将em.persist(box) - 将
CascadeType.PERSIST放在Item实体中,然后将em.persist(item) - 两者,
persist由我决定 - 可以是em.persist(box)或em.persist(item)
- 将
【问题讨论】:
标签: java hibernate jpa persistence