【问题标题】:Creating a node in neo4j with one unique property other than ID在 Neo4j 中创建一个具有除 ID 之外的唯一属性的节点
【发布时间】:2016-09-01 06:14:57
【问题描述】:

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

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

以下是我的域类。

用户角色类

 @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 来保存实体。

【问题讨论】:

    标签: spring-boot neo4j spring-data-neo4j-4


    【解决方案1】:

    目前唯一的方法是先查询存在的权限,如果不存在则创建它,如果存在则使用它。还要添加一个唯一约束以确保安全。

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

    【讨论】:

    • 感谢您的洞察力,但是需要在哪里编写代码来检查权限是否已经存在,因为正在使用 UserRole 存储库来创建权限。你能分享一个这样的例子吗?
    • 在创建权限并将其添加到 UserRole 之前?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多