jpa 多层嵌套一对多_OpenJPA-嵌套的一对多关系合并问题
將其發(fā)布在這里是因?yàn)槲以谶@里沒有太大的興趣:http : //www.java-
forums.org/jpa/96175-openjpa-one-many-within-one-many-merge-
problems.html
試圖找出這是OpenJPA的問題還是我做錯(cuò)了…
嘗試使用OpenJPA更新包含與另一個(gè)實(shí)體具有一對多關(guān)系的實(shí)體時(shí),遇到一個(gè)問題。這是我正在談?wù)摰暮唵问纠?#xff1a;
@Entity
@Table(name = "school")
public class School {
@Column(name = "id")
protected Long id;
@Column(name = "name")
protected String name;
@OneToMany(mappedBy = "school", orphanRemoval = true, cascade = CascadeType.ALL)
protected Collection classRooms;
}
@Entity
@Table(name = "classroom")
public class ClassRoom {
@Column(name = "id")
protected Long id;
@Column(name = "room_number")
protected String roomNumber;
@ManyToOne
@JoinColumn(name = "school_id")
protected School school;
@OneToMany(mappedBy = "classRoom", orphanRemoval = true, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
protected Collection desks;
}
@Entity
@Table(name = "desk")
public class Desk {
@Column(name = "id")
protected Long id;
@ManyToOne
@JoinColumn(name = "classroom_id")
protected ClassRoom classRoom;
}
在SchoolService類中,我具有以下更新方法:
@Transactional
public void update(School school) {
em.merge(school);
}
我正在嘗試從學(xué)校中刪除一間教室。我將其從classRooms集合中刪除并調(diào)用更新。我注意到教室沒有書桌,沒有問題。但是,如果教室有桌子,它會(huì)拋出一個(gè)約束錯(cuò)誤,因?yàn)樗坪跏紫葒L試刪除教室,然后再刪除桌子。(教室ID列有一個(gè)外鍵約束)
我會(huì)以錯(cuò)誤的方式處理嗎?我是否缺少某些設(shè)置才能讓它先刪除內(nèi)部的“桌面”實(shí)例,然后再刪除已刪除的“課堂”實(shí)例?
任何幫助,將不勝感激。如果您需要更多信息,請告訴我。謝謝,
總結(jié)
以上是生活随笔為你收集整理的jpa 多层嵌套一对多_OpenJPA-嵌套的一对多关系合并问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 佛山的铝合金门窗品牌,哪家比较好?
- 下一篇: 删除vue打包大小限制_压缩Vue.js