Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate ElementCollection子级删除_Hibernate_Jpa_Jpa 2.0 - Fatal编程技术网

Hibernate ElementCollection子级删除

Hibernate ElementCollection子级删除,hibernate,jpa,jpa-2.0,Hibernate,Jpa,Jpa 2.0,我的UserPO实体中有以下映射: @ElementCollection @JoinTable(name = "role", joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "department") }) @MapKeyJoinColumn(name = "mission") private Map<MissionPO, DepartmentListPO&

我的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>();
未删除链接用户/任务/部门列表的
角色
行。 我读了很多文章,似乎无法使用
ElementCollection
进行批量删除

我试图在DepartmentList外键的role表上使用CASCADE DELETE上的约束
,但这似乎与我想要的相反。删除部门列表将删除该角色

因此,我希望在
actor
removeMission
方法中执行类似于
entityManager.remove(departmentList)
的操作

不幸的是,
PersistentContext
似乎无法放入
User
实体中

所以我有点困惑解决方案是什么,因为我知道我希望避免数据库触发器


感谢您提供的任何解决方案,我真的陷入了困境。

我认为这个问题是由数据模型引起的,而不是由ORMs、hibernate或JPA引起的。根据我的经验,这似乎是一种非常规的方法


一个特派团可以是它自己的实体,其中包含一个部门属性,该属性也作为一个实体存在。在创建任务地图时,使用数据库中的代理键作为地图的键会更有用。我鼓励您花时间检查数据模型以查找需要映射的其他实体。

我认为此问题是由数据模型引起的,而不是由ORMs、hibernate或JPA引起的。根据我的经验,这似乎是一种非常规的方法


一个特派团可以是它自己的实体,其中包含一个部门属性,该属性也作为一个实体存在。在创建任务地图时,使用数据库中的代理键作为地图的键会更有用。我鼓励您花时间检查数据模型,以查找需要映射的其他实体。

任务应独立于部门,因为同一任务可以分配给不同部门的不同用户。一个任务可以在不给用户的情况下生存。但你是对的,也许我可以为角色表创建一个实体,在这种情况下,我会在任务中包含一个用户属性。但你明白我想说的更重要的一点吗?为这些表使用代理键将使您的生活更轻松。好吧,我现在知道了,我不是英语专家,所以我“绕过”了代理键,而没有真正注意到它的重要性。我会这样做,但似乎使用Map和ElementCollection是我删除问题的关键否?是的,我所说的代理是指由自动递增字段、序列或触发器生成的主键。我按照您的方式使用生成的主键修改了模型。正如你所说,现在控制我的Hibernate模型容易多了。任务应该独立于部门,因为相同的任务可以分配给不同部门的不同用户。一个任务可以在不给用户的情况下生存。但你是对的,也许我可以为角色表创建一个实体,在这种情况下,我会在任务中包含一个用户属性。但你明白我想说的更重要的一点吗?为这些表使用代理键将使您的生活更轻松。好吧,我现在知道了,我不是英语专家,所以我“绕过”了代理键,而没有真正注意到它的重要性。我会这样做,但似乎使用Map和ElementCollection是我删除问题的关键否?是的,我所说的代理是指由自动递增字段、序列或触发器生成的主键。我按照您的方式使用生成的主键修改了模型。正如你所说,现在控制我的Hibernate模型容易多了。
departmentsByMission.remove(mission)