0
我有Person和Group表之间的多对多关系,连接表是PersonGroup。当我保存/删除人员时,它将保存并从Person, PersonGroup and Group
表中删除。多对多 - 保存/更新连接表和一张表
我只是想删除/从“人”和“PersonGroup”表保存并退出Group table untouched.
而上查询“人”,我应该得到的人物实体“集团”之列。
所以基本上“Group”是一个参考表。只能从组表中读取,不能删除/更新。
我该如何做到这一点?
@Entity
@Table(name="Person")
public class Person implements Serializable {
@Id
private long personId;
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(name="PersonGroup", [email protected](name="person_id"),
[email protected](name="group_id"))
private List<Group> groups;
}
@Entity
@Table(name="Group")
public class Group implements Serializable {
@Id
private long groupId;
@ManyToMany(mappedBy="groups")
private List<Person> persons;
}
Removeing的cascadetyp.all不将其保存在组表,但它也没有将其保存在连接表'PersonGroup' – Nero
的mappedBy的Javadoc是一个有点误导... 你应该映射你的连接表的一侧,不“拥有”的关系,并使用mappedBy在“拥有”的关系一侧... 现在的方式,我想冬眠会如果您保存了Group对象,则更新连接表... 我将编辑我的答案addre那个 –