0

私は SDN4 を使用しており、新しい別の関係を追加すると以前の関係が削除されるという問題に直面しています。ここに私のシナリオがあります、

ステップ 1 Relationship エンティティを使用して、いくつかの関係を持つノードを作成します。関係エンティティを保存します。

ステップ 2 では、Spring Repository と Cypher を使用していくつかのプロパティに基づいてノードを取得し、新しいさまざまな関係を追加します。ここに私のフェッチAPIがあります:

@Component("productRepository")
public interface ProductRepository extends GraphRepository<Product>{
   @Query("MATCH (c:Product {uuid:{0}}) RETURN c")
   Product findByUuid(String uuid);
}

関係エンティティを保存する

これを行うと、ステップ 1 で追加された関係は失われますが、ステップ 2 の関係は維持されます。

いくつかのデバッグを行うと、Cypher を使用したフェッチによって返された Node エンティティと Spring リポジトリの関係エンティティに null 値があることがわかります。

注: ステップ 2 を実行しない場合、ステップ 1 の関係が正しく反映されます。

何か不足している場合、またはこれが問題である場合は、誰かに知らせてください。これがサイファーのどこかにない限り、この場合の深さを指定する方法がわかりません。

4

3 に答える 3

2

@Query の深さパラメーターはサポートされていません。この時点でのオプションは -

を。リポジトリ findOne(id,depth) または Neo4jTemplate.load(type,id,depth) を使用して、@Query によって返された製品を必要な深さまでリロードするには

b. @Query を一連の org.neo4j.ogm.cypher.Filter に変換できる場合は、フィルターと深さを受け入れる Session.loadAll メソッドを使用できます。MusicIntegrationTestには、いくつかの Filter の例が含まれています。

于 2015-09-09T16:16:35.157 に答える
0

私はそれが最後の答えから永遠にあったことを知っていますが、誰かがこの問題にも問題を抱えているかもしれません..

ogm はこの例外を更新することでカバーしたと思います。関係はもう削除されていません。 ( ogm 2.0.5 & neo4j 3.0.7でテスト済み。)

ps。深さが 1 のクエリを実行すると、実行時間が大幅に短縮されます。必要がない限り、もう使用しないでください。

于 2016-12-15T13:18:56.870 に答える
0

他の参考のために、@Luanneの提案に従ってオプションbに従いました。

ここにコードスニペットがあります

def getByUuid[T](klazz: Class[T], uuid: String): T = {
    IterableUtils.getSingleOrNull(session.loadAll(klazz, new Filter("uuid", uuid), 1))
}
于 2015-09-10T11:19:04.390 に答える