2016-09-01 1 views
2

내 프로젝트는 Spring 부트 + Neo4j를 기반으로합니다. 새로운 권한 노드를 만들려고하는데 권한을 복제하고 싶지 않습니다.ID가 아닌 고유 한 속성을 가진 neo4j에서 노드 생성

이제는 보유 노드 인 UserRole 노드가 List<Privilege>입니다. 지금 나는 Privilege를 만들 때 우선 privilege가 같은 privilegeName 속성을 가진 또 다른 Privilege를 확인한다.

다음은 내 도메인 클래스입니다.

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

권한 클래스 내가 엔티티를 저장 GraphRepository를 사용하고

@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 Repository가 권한을 생성하는 데 사용되기 때문입니다. 그런 종류의 예를 들려 줄 수 있습니까? –

+0

권한을 생성하고 UserRole에 추가하기 전에? – Luanne

+0

어떻게 작동하는지 확인하겠습니다. –

관련 문제