我对OneToMany RelationsShip的实现与此描述类似:
http://en.wikibooks.org/wiki/Java_Persistence/OneToMany
实体组:
@Entity
public class Group {
@OneToMany(cascade = { CascadeType.ALL }, orphanRemoval = true)
private List<Unit> units = new ArrayList<Unit>();
public void addUnit(Unit unit) {
this.units.add(unit);
if (unit.getGroup() != this) {
unit.setGroup(this);
}
}
实体单位:
@Entity
public class Unit {
@ManyToOne(cascade = CascadeType.PERSIST)
private Group Group;
public void setGroup(Group Group) {
this.Group = Group;
if (Group != null && !Group.getGoodItems().contains(this)) {
Group.getGoodItems().add(this);
}
}
}
现在我想在两组之间移动1个单位:
unit.setGroup(组2);
在该操作之后,我可以在数据库中看到关系表GROUP_UNIT 该单位现在与group1和group2相关。
如何正确地在两组之间移动单位?
答案 0 :(得分:1)
您应该在注释中添加mappedBy:
@OneToMany(cascade = { CascadeType.ALL }, orphanRemoval = true, mappedBy="Group")
private List<Unit> units = new ArrayList<Unit>();
使用mappedBy,您将不再需要JOIN_TABLE。