Hibernate 使用级联删除休眠多个关系

Hibernate 使用级联删除休眠多个关系,hibernate,jpa,Hibernate,Jpa,我需要实现基于角色权限的身份验证。情况是这样的 角色具有多个/多个权限。 相反,, 可以将权限分配给多个角色。 所以,这个团队设计了三个表名 1) 角色(列:roleId、name、desc) 2) 右(列:rightId、name、desc) 3) RoleRightAssociation(列:roleId、rightId、assignedDate、assignedBy) 第三个表存储的数据如下: 用户“X”在特定日期将右侧“A”分配给角色“B”。 用例是, 删除角色时,必须删除该角色对应的R

我需要实现基于角色权限的身份验证。情况是这样的

角色具有多个/多个权限。 相反,, 可以将权限分配给多个角色。

所以,这个团队设计了三个表名

1) 角色(列:roleId、name、desc)

2) 右(列:rightId、name、desc)

3) RoleRightAssociation(列:roleId、rightId、assignedDate、assignedBy)

第三个表存储的数据如下:

用户“X”在特定日期将右侧“A”分配给角色“B”。

用例是, 删除角色时,必须删除该角色对应的RoleRightAssociation中的所有条目(删除级联)。但不是从一张合适的桌子上

我为此创建了三个实体,并给出了如下关系:, 角色:

PrimaryKeyRoleRight:

 @ManyToOne(cascade = CascadeType.ALL)
    private Role roleId;

    @ManyToOne(cascade = CascadeType.ALL)
    private Right rightId;
我不能满足给定的用例。 我需要在受尊敬的JPA实体中应用什么关系


提前感谢。

Cascade.ALL不包括
删除孤立文件

您必须在
角色
实体中的
角色列表
中添加
孤立删除=true

@OneToMany(mappedBy="roleRoghtId.rightId",cascade=CascadeType.ALL)
   private List<RoleRight> roleRightsList;
     @Entity
     @Table(name = "RoleRight")
     @AssociationOverrides({ 
     @AssociationOverride(name = "roleRoghtId.roleId",joinColumns = @JoinColumn(name = "roleId")),
     @AssociationOverride(name = "roleRoghtId.rightId",joinColumns = @JoinColumn(name = "rightId")) })
public class RoleRightAssociation {
...
   @EmbeddedId
    private PrimaryKeyRoleRight roleRoghtId=new PrimaryKeyRoleRight();

...
}
 @ManyToOne(cascade = CascadeType.ALL)
    private Role roleId;

    @ManyToOne(cascade = CascadeType.ALL)
    private Right rightId;