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.
Nein, nicht hinzuzufügen. –