本文介绍了在Neo4j中创建一个具有ID以外的唯一属性的节点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的项目基于Spring boot + Neo4j.我正在尝试创建一个新的Privilege节点,但是不想复制Privilege.

My Project is based on Spring boot + Neo4j .I am trying to create a new Privilege node , but don't want to duplicate Privilege.

现在我有一个拥有List<Privilege>的UserRole节点.现在我希望在创建Privilege时首先检查是否存在另一个具有相同privilegeName属性的Privilege.

Now I have a UserRole node which is holds List<Privilege>. Now I want that when I create a Privilege , it check first is another Privilege exists with same privilegeName property.

下面是我的域类.

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

我正在使用GraphRepository保存实体.

I am Using GraphRepository to save Entities.

推荐答案

当前执行此操作的唯一方法是先查询现有的权限,然后如果不存在则创建它,或者如果存在则使用它.还要添加一个唯一的约束以确保安全.

The only way to do this currently is to query for the Privilege existing first and then create it if not, or use it if it does. Also add a unique constraint to be safe.

在将来的版本中,将支持此用例.

In a future release, this use case will be supported.

这篇关于在Neo4j中创建一个具有ID以外的唯一属性的节点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-17 06:06