2016-09-01 7 views
2

マイプロジェクトはSpringブート+ Neo4jに基づいています。 新しいPrivilegeノードを作成しようとしていますが、Privilegeを複製したくありません。ID以外の1つのユニークなプロパティを持つノードを作成する

今私はList<Privilege>を保持するUserRoleノードを持っています。今すぐ 私は、Privilegeを作成するときに、それが同じprivilegeNameプロパティを持つ別のPrivilegeが存在することを確認します。

下記は私のドメインクラスです。私は、エンティティを保存するためにGraphRepositoryを使用しています

のUserRoleクラス

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

特権クラス

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

答えて

3

これを実行する唯一の方法は、まず既存の特権を照会し、それがない場合は作成し、そうであれば使用する方法です。安全のためにユニーク制約を追加する。

今後のリリースでは、このユースケースがサポートされます。

+0

あなたの洞察に感謝します。 UserRoleリポジトリがpriviledgeの作成に使用されているため、Privilegeが既に存在するかどうかを確認するコードはどこに書く必要がありますか です。 あなたはそのような種類の例を共有できますか? –

+0

特権を作成してUserRoleに追加する前に? – Luanne

+0

どのように動作するか確認しましょう。 –

関連する問題