我有了這個映射在我的UserPO實體:休眠ElementCollection孩子刪除
@ElementCollection
@JoinTable(name = "role", joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "department") })
@MapKeyJoinColumn(name = "mission")
private Map<MissionPO, DepartmentListPO> departmentsByMission = new HashMap<MissionPO, DepartmentListPO>();
我使用一個表DepartmentList和DepartmentListPO作爲Map<MissionPO, List<DepartmentPO>>
似乎不是與Hibernate(或JPA)的選項
到目前爲止,用戶可以被授予限制在部門列表中的任務。
例: 湯姆任務1對部門10和11
我的問題是,如果我刪除一個任務:
departmentsByMission.remove(mission)
的role
一行鏈接用戶/任務/ DepartmentList不刪除。 我讀了很多線程,似乎批量刪除不可能與ElementCollection
。
我試圖在DepartmentList外鍵上的角色表上使用約束ON CASCADE DELETE
,但這似乎與我想要的相反。刪除一個DepartmentList將刪除該角色。
所以我想在actor
的removeMission
方法中做類似entityManager.remove(departmentList)
的操作。
不幸的是,PersistentContext
似乎不能放在User
實體中。
所以我有點困惑會是什麼解決方案,知道我想避免數據庫觸發器。
感謝您的任何解決方案,我真的卡在那裏。
任務應該與部門無關,因爲同一個任務可以分配給不同部門的不同用戶。一項任務可以在沒有給予用戶的情況下生活。但是你是對的,也許我可以爲角色表創建一個實體 –
在這種情況下,我會在任務中包含一個用戶屬性。但是你有沒有得到我想要做的更大的觀點?對這些表使用代理鍵將使您的生活更輕鬆。 –
好吧,我現在明白了,我不是英語專家,所以我「繞過」代理人而沒有真正意識到這一點很重要。我會這樣做,但似乎使用Map和ElementCollection是我的刪除問題點沒有? –