摘要: 隨着SDN4
,我堅持10名對象,其中一半有相同的內容只有ID用它們所連接的不同。鏈接ID設置爲@Transient
。儘管如此,兩個對象是使用相同的內容創建的,而不是具有兩個鏈接的對象。我怎樣才能避免這種行爲?春數據的Neo4j 4.0:創建重複節點,應該建立關係,而不是
詳細信息: 我們定義了兩個域對象,並通過CSV信息源,它們看起來如下:
域對象一個CSV:
key,name
1,test1
3,test3
POJO答:
@Transient
private int key;
private String name;
@Relationship(type = "HAS_CERTIFICATION", direction = "OUTGOING")
private Set<B> bObject = new HashSet<>();
public void setName(String name) {
this.name = name;
}
@Relationship(type = "HAS_CERTIFICATION", direction = "OUTGOING")
public void hasCertification(B b) {
bObject.add(b);
b.getA().add(this);
}
域對象B:
foreignKey,name,value
1,ISO9001,TRUE
1,ISO14001,TRUE
3,ISO9001,TRUE
3,ISO14001,TRUE
POJO B:
@Transient
private int foreignKey;
private String name;
private String value;
@Relationship(type = "HAS_CERTIFICATION", direction = "INCOMING")
private Set<A> a = new HashSet<>();
public void setName(String name) {
this.name = name;
}
public void setValue(String value) {
this.value = value;
}
@Relationship(type = "HAS_CERTIFICATION", direction = "INCOMING")
public Set<A> getA() {
return a;
}
這些CSV文件被解析並在各自POJO的(A和B)加載到SDN4。現在
我們遍歷這些對象並添加關係:
private void aHasCertification(
Optional<List<B>> b,
Optional<List<A>> a) {
for (A aObj : a()) {
for (B bObj : b()) {
if(bObj.getForeignKey() == aObj.getKey()) {
aObj.hasCertification(bObj);
}
}
}
}
然後根庫,repositoryA,用來保存加載的對象。 repositoryA.save(domainObjectA);
現在,當我查詢數據庫; match n return n;
對於每個A對象,都會有兩個ISO9001
和兩個ISO14001
對象。而不是我所期望的,其中每一個有兩個鏈接到A:1
和A:3
。
好的,回答了我的問題,它不會識別它只是由節點的內容重複。我必須事先做一些CSV處理。謝謝 –