通过 loadAll by ids 加载递归关系时出错

Error loading recursive relationship by loadAll by ids

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

应该 return 2 Person 个对象,Alex 包含两个 friends(Guy、Joseph)和 Nati 包含一个 friend 但实际上 returns 是 5 个对象(Alex、Guy、Joseph、Nati、Amit)。尽管 Mike 和 Nati 确实包含他们的朋友,但我通过两个 ID 请求 Persons 并得到一个包含 5 的 Iterable 似乎很奇怪(当然也不需要)。有人知道这是为什么吗?这是一个错误吗?

这是设计使然。 OGM 有一个搜索深度的概念。默认情况下(在您的示例中,明确地)搜索深度为 1,这意味着从图中获取请求的对象及其直接邻居。如果您不希望出现这种情况,可以明确设置搜索深度。像这样将其设置为零:

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

将只获取请求的对象。

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