2016-10-18 4 views
2

Ich habe eine Anforderung, Rollen-rechtsbasierte Authentifizierung zu implementieren. Das Szenario ist wie,Hibernate-Viele-Viele-Beziehung mit Kaskadenlöschung

Eine Rolle hat mehrere/viele Rechte. Im Gegensatz Ein Recht kann mehreren Rollen zugewiesen werden.

So, hier Team hat als drei Tabellen Namen entworfen,

1) Rolle (Spalt: RoleID, Name, absteigend)

2) Right (Spalten: rightid, Name, ab)

3) RoleRightAssociation (Spalten: RoleID, rightid, assignedDate, assignedBy)

Die dritte Tabelle wie die Daten speichert,

Das rechte 'A' wurde der Rolle 'B' durch den Benutzer 'X' an einem bestimmten Datum zugewiesen.

UseCase ist, Wenn ich eine Rolle löschen Sie alle Einträge aus RoleRightAssociation zu dieser Rolle entsprechende gelöscht werden müssen (Cascade Löschen). Aber nicht von einem rechten Tisch.

ich drei Einheiten für diese erstellt haben und die Beziehungen gegeben wie, Rolle:

@OneToMany(mappedBy="roleRoghtId.roleId",cascade=CascadeType.ALL) 
    private List<RoleRight> roleRightsList=new ArrayList<RoleRight>(); 

Rechts:

@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; 

Ich bin nicht in der Lage, den gegebenen Anwendungsfall zu erfüllen. Welche Beziehungen muss ich in respektierten JPA-Einheiten anwenden?

Vielen Dank im Voraus.

Antwort

1

Cascade.ALL enthält nicht delete Orphan.

Sie haben orphanRemoval = true auf Ihre roleRightsList in Role Unternehmen arbeiten

+0

Nein, nicht hinzuzufügen. –

Verwandte Themen