概要:
を使用SDN4
して、10 個のオブジェクトを保持しています。その半分は同じ内容で、リンク先の ID のみが異なります。リンク ID は として設定され@Transient
ます。それでも、2 つのリンクを持つ 1 つのオブジェクトではなく、同じコンテンツを持つ 2 つのオブジェクトが作成されます。この動作を回避するにはどうすればよいですか?
詳細: 2 つのドメイン オブジェクトが定義されており、CSV 経由の情報ソースは次のようになります。
ドメイン オブジェクト CSV:
key,name
1,test1
3,test3
ポジョ A:
@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
ポジョ 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 オブジェクトごとに 2 つとISO9001
2 つのISO14001
オブジェクトがあります。私が期待するものの代わりに、それぞれに と への 2 つのリンクがA:1
ありA:3
ます。