问题描述
我的项目基于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以外的唯一属性的节点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!