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那個 –