2016-09-01 4 views
2

Mein Projekt basiert auf Spring boot + Neo4j. Ich versuche, einen neuen Berechtigungsknoten zu erstellen, möchte aber Privilege nicht duplizieren.Erstellen eines Knotens in neo4j mit einer anderen eindeutigen Eigenschaft als ID

Jetzt habe ich einen UserRole-Knoten, der List<Privilege> gilt. Jetzt Ich möchte, dass, wenn ich ein Privileg erstellen, es zuerst prüfen, ist ein anderes Privileg existiert mit derselben Eigenschaft privilegName.

Unten sind meine Domain-Klassen.

Userrole Klasse

@NodeEntity 
public class UserRole { 

    public UserRole(User user, Role role) { 
     this.user = user; 
     this.role = role; 
    } 

    /** 
    For Jackson Parsing 
    **/ 
    public UserRole() { 
    } 

    @GraphId 
    private Long id; 

    public UserRole(User user, Role role, Unit unit) { 
     this.user = user; 
     this.role = role; 
     this.unit = unit; 
    } 



    public long getId() { 
     return id; 
    } 

    @Relationship(type = HAS_USERROLE,direction = "OUTGOING") 
    User user; 
    public User getUser() { 
     return user; 
    } 

    @Relationship (type = HAS_ROLE_OF,direction = "OUTGOING") 
    Role role; 
    public Role getRole() { 
     return role; 
    } 


    @Relationship(type = "WORKS_IN",direction = "OUTGOING") 
    Unit unit; 

    public Unit getUnit() { 
     return unit; 
    } 

    public void setUnit(Unit unit) { 
     this.unit = unit; 
    } 

    @Relationship(type = "HAS_PRIVILEDGE", direction = "OUTGOING") 
    List<Priviledge> priviledgeList; 

    public List<Priviledge> getPriviledgeList() { 
     return priviledgeList; 
    } 

    public void setPriviledgeList(List<Priviledge> priviledgeList) { 
     this.priviledgeList = priviledgeList; 
     } 
    } 

Berechtigungsklasse

@GraphId 
    Long id; 


    private String priviledge; 

    private String priviledgeOn; 
    private Long priviledgeOnId; 

    public Priviledge() { 
    } 

    public Priviledge(String priviledge, String priviledgeOn) { 
     this.priviledge = priviledge; 
     this.priviledgeOn = priviledgeOn; 
    } 

    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    public String getPriviledge() { 
     return priviledge; 
    } 

    public void setPriviledge(String priviledge) { 
     this.priviledge = priviledge; 
    } 

    public String getPriviledgeOn() { 
     return priviledgeOn; 
    } 

    public void setPriviledgeOn(String priviledgeOn) { 
     this.priviledgeOn = priviledgeOn; 
    } 

    public Long getPriviledgeOnId() { 
     return priviledgeOnId; 
    } 

    public void setPriviledgeOnId(Long priviledgeOnId) { 
     this.priviledgeOnId = priviledgeOnId; 
     } 
    } 

ich GraphRepository bin mit Entities zu speichern.

Antwort

3

Die einzige Möglichkeit, dies zu tun, besteht derzeit darin, zuerst nach dem vorhandenen Privileg zu suchen und es dann zu erstellen, falls nicht, oder es zu verwenden, wenn dies der Fall ist. Fügen Sie auch eine eindeutige Einschränkung hinzu, um sicher zu sein.

In einer zukünftigen Version wird dieser Anwendungsfall unterstützt.

+0

Vielen Dank für Ihren Einblick, aber wo ist es notwendig, den Code zu schreiben, um zu prüfen, ob Privileg bereits existiert, , weil UserRole Repository verwendet wird, um Privileg zu erstellen. Können Sie ein Beispiel dieser Art teilen? –

+0

Bevor Sie ein Privileg erstellen und es zu UserRole hinzufügen? – Luanne

+0

lassen Sie mich überprüfen, wie es funktionieren wird. –

Verwandte Themen