使用loadAll加载递归关系时出错

时间:2015-11-02 18:46:49

标签: neo4j spring-data-neo4j spring-data-neo4j-4 neo4j-ogm

使用新的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)

应该返回2个 Person 对象,Alex包含两个朋友(Guy,Joseph)和Nati包含一个朋友但它实际返回的是5件物品(Alex,Guy,Joseph,Nati,Amit)。虽然Mike和Nati确实包含了他们的朋友,但是我通过两个id请求 Person 并且得到包含5的Iterable似乎很奇怪(当然也不需要)。有谁知道这是为什么?这是一个错误吗?

2 个答案:

答案 0 :(得分:1)

这是设计的。 OGM具有搜索深度的概念。默认情况下(在您的示例中,显式)搜索深度为1,表示从图中获取请求的对象及其直接邻居。如果您不想要此行为,则可以明确设置搜索深度。像这样将它设置为零:

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

将仅获取所请求的对象。

答案 1 :(得分:1)

此问题现已在1.1.4-SNAPSHOT版本中修复。