我的桌子父母和孩子之间有很多关系。
这是映射此关系的 Parent 类的部分:
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "parents_children",
joinColumns = { @JoinColumn(name = "PARENT_ID", nullable = false, updatable = false) },
inverseJoinColumns = { @JoinColumn(name = "CHILD_ID", nullable = false, updatable = false) })
protected Set<Child> children = new HashSet<Child>();
这是我的孩子班的一部分:
@ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER, mappedBy = "children")
protected Set<Parent> parents;
现在,当我尝试添加子项时,如果我将一个子对象定义为child
,一个父对象定义为parent
:
parent.getChildren().add(child);
这会在 db 中正确更新,并将条目保存到parents_children
表中。
但是,当我尝试从另一端进行操作时,我想从孩子那里设置父母。如果我已经Set<Parent> parents
定义并且我updateParents()
在我的Children
类中定义了方法,并且我从定义为的 db 加载了一个孩子child
,我尝试了这个:
public void updateParents() {
Set<Parent> parents = //get this from somewhere
child.setParents(parents);
update();
}
这不起作用,我试图找出原因。如果我将方法修改为:
public void updateParents() {
Set<Parent> parents = //get this from somewhere
for (Parent parent : parents) {
parent.getChild().add(this);
}
}
我在关系定义方面做错了吗?我有一段时间没有使用 Java 了,我很难记住这个。
有人可以向我指出我做错了什么,以便我可以将父母添加到孩子对象中吗?