我的 UserPO 实体中有这个映射:
@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 和 DepartmentListPOMap<MissionPO, List<DepartmentPO>>
似乎不是 Hibernate(或 JPA)的选项
到目前为止一切顺利,用户可以被赋予仅限于部门列表的任务。
示例:Tom 在部门 10 和 11 执行任务 1
我的问题是,如果我删除一个任务:
departmentsByMission.remove(mission)
链接 User/Mission/DepartmentList的role
行不会被删除。我阅读了很多线程,似乎无法使用ElementCollection
.
我尝试对ON CASCADE DELETE
DepartmentList 外键上的角色表使用约束,但这似乎与我想要的相反。删除 DepartmentList 将删除该角色。
所以我想做entityManager.remove(departmentList)
的removeMission
是在actor
.
不幸的是,似乎PersistentContext
无法将其放入User
实体中。
所以我有点困惑解决方案是什么,我知道我想避免数据库触发器。
感谢您的任何解决方案,我真的被困在那里。