我需要实现基于角色的身份验证。场景就像,
角色拥有多项/多项权利。 相反, 权利可以分配给多个角色。
所以,这里团队设计了三个表名,
1)角色(列:roleId,name,desc)
2)右(列:rightId,name,desc)
3)RoleRightAssociation(列:roleId,rightId,assignedDate,assignedBy)
第三个表存储数据,如
在特定日期,用户“X”已将“A”分配给角色“B”。
UseCase 是, 删除角色时,必须删除与该角色对应的RoleRightAssociation中的所有条目(删除级联)。但不是来自右表。
我为此创建了三个实体并给出了关系, 职责:
@OneToMany(mappedBy="roleRoghtId.roleId",cascade=CascadeType.ALL)
private List<RoleRight> roleRightsList=new ArrayList<RoleRight>();
右:
@OneToMany(mappedBy="roleRoghtId.rightId",cascade=CascadeType.ALL)
private List<RoleRight> roleRightsList;
RoleRightAssociation:
@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();
...
}
PrimaryKeyRoleRight:
@ManyToOne(cascade = CascadeType.ALL)
private Role roleId;
@ManyToOne(cascade = CascadeType.ALL)
private Right rightId;
我无法满足给定的用例。 我需要在受尊重的JPA实体中应用哪些关系?
先谢谢。
答案 0 :(得分:1)
Cascade.ALL不包含delete Orphan
。
您必须将orphanRemoval = true
添加到roleRightsList
实体中的Role