4

GraphUnit でサポートされている統合テストを書いていますが、既存の関係が指す子ノードを更新しようとすると、奇妙な動作に気付きました。

次のようなバッキング グラフとの既存の関係があるとします。

(A:ParentNode)-[:SOME_REL {id: 1}]->(B:ChildNode)

次のようなコードを書いて更新しようとすると:

ChildNode newChildNode = new ChildNode();
existingRelationship.setChild(newChild);
RelationshipRepository.save(existingRelationship);

結果のグラフは次のようになります。

(A:ParentNode)
(B:ChildNode)
(C:ChildNode)

しかし、私はそれが次のようになることを期待しています:

(A:ParentNode)-[:SOME_REL {id: 1}]->(C:ChildNode)

GraphRepository を実行したときに表示される生のログ出力にはsave()、関係を削除する Cypher クエリの DELETE ステートメントが含まれています。

10:32:32.218 [main] DEBUG o.n.o.s.r.SessionRequestHandler - {"statements":[{"statement":"MATCH ()-[_0]->() WHERE id(_0)=0 SET _0+={_0_props}  WITH _0 MATCH ($0)-[_1:`SOME_REL`]->($1) WHERE id($0)=0 AND id($1)=1 AND id(_1)=0 DELETE _1","parameters":{"_0_props":{"doubleProp":1.0}},"resultDataContents":["row"],"includeStats":false}]}
10:32:32.219 [main] INFO  o.n.o.session.request.DefaultRequest - POST http://localhost:7475/db/data/transaction/commit, request: {"statements":[{"statement":"MATCH ()-[_0]->() WHERE id(_0)=0 SET _0+={_0_props}  WITH _0 MATCH ($0)-[_1:`SOME_REL`]->($1) WHERE id($0)=0 AND id($1)=1 AND id(_1)=0 DELETE _1","parameters":{"_0_props":{"doubleProp":1.0}},"resultDataContents":["row"],"includeStats":false}]}

これはバグですか?それとも、SDN4 関係エンティティを適切に更新していませんか? 効率的に更新を行うたびに、リレーションシップを削除してゼロから作成する必要がありますか?

4

1 に答える 1