5

新しい Neo4j 2.3 OGM を使用します。ID でエンティティを読み込もうとすると、次の問題が発生します。

@NodeEntity
class Person {
    Long id;
    String name;

    @Relationship(type="Friend", direction = Direction.OUTGOING)
    public List<Person> friends;
}

(1, "Alex")が(2, "Joseph")および(3, "Guy")と友達であると仮定します。(4, "Nati")は(5, "Amit")と友達で、次のコードを使用します:

session.loadAll(Person.class, Arrays.toList(new Long() { 1L, 4L }), 1)

Alex には 2 人の友人( Guy、Joseph) が含まれ、Nati には 1 人の友人が含まれますが、実際には 5 つのオブジェクト (Alex、Guy、Joseph、Nati、Amit) が返されます。Mike と Nati には友人が含まれていますが、私が 2 つの ID でPersonを要求し、5 を含む Iterable を取得したのは奇妙に思えます (そして確かに望ましくないことです) 。これはバグですか?

4

2 に答える 2

1

これは仕様によるものです。OGM には、検索深度の概念があります。デフォルトでは (そしてあなたの例では明示的に) 検索の深さは 1 です。つまり、要求されたオブジェクトをすぐ隣のオブジェクトと共にグラフからフェッチします。この動作が必要ない場合は、検索の深さを明示的に設定できます。次のようにゼロに設定します。

session.loadAll(Person.class, Arrays.toList(new Long() { 1L, 4L }), 0)

要求されたオブジェクトだけをフェッチします。

于 2015-11-02T19:59:49.760 に答える
1

この問題は、1.1.4-SNAPSHOT ビルドで修正されました。

于 2015-11-10T09:23:52.327 に答える