gpt4 book ai didi

neo4j - 按ids通过loadAll加载递归关系时出错

转载 作者:行者123 更新时间:2023-12-04 21:11:32 25 4
gpt4 key购买 nike

使用新的 Neo4j 2.3 OGM。当尝试通过 id 加载实体时,我遇到了以下问题:

@NodeEntity
class Person {
Long id;
String name;

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

假设 (1, "亚历克斯") 是 friend (2, "约瑟夫") (3, "家伙") . (4, "娜蒂") 是 friend (5, "阿弥陀佛") ,使用以下代码:

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



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

最佳答案

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

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

将只获取请求的对象。

关于neo4j - 按ids通过loadAll加载递归关系时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33484692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com