0

在单向休眠映射中删除父级的最佳做法是什么?(我正在使用 JPA)

Parent: 
@OneToMany(mappedBy = "parent", fetch = FetchType.LAZY)
private List<Child> children= new ArrayList<Child>();

Child:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "fk_parent")
private Parent parent;

孩子是这里关系的所有者,我想删除一个有孩子关联的父母。我如何实现它?我应该继续从父级中逐个迭代子级并删除它们,还是存在其他方式。不幸的是,在休眠文档中没有找到任何关于删除的内容。

4

2 回答 2

0

所以事实上,你的关联是双向的,而不是单向的......

如果您的目标是在删除父级时删除子级,那么您只需要

@OneToMany(mappedBy = "parent", fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)
private List<Child> children= new ArrayList<Child>();

em.remove(parent);
于 2012-06-20T13:49:39.053 回答
0

天哪!发现了问题。这与级联无关,但需要级联。问题在于我将孩子添加到父母并删除它们的方式。所以总结一下:

如果我在父级上执行保存以创建关联:

parent.addChild(child)  
em.save(parent)

那么我必须在删除时从父级操作。或者,如果我将孩子添加为

child.setParent(parent)
em.save(child)

然后我必须对孩子进行操作以删除它等等。

于 2012-06-21T11:46:27.190 回答