Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 通过loadAll by ids加载递归关系时出错_Neo4j_Spring Data Neo4j_Spring Data Neo4j 4_Neo4j Ogm - Fatal编程技术网

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

Neo4j 通过loadAll by ids加载递归关系时出错,neo4j,spring-data-neo4j,spring-data-neo4j-4,neo4j-ogm,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; } @NodeEntity 班子{ 长id; 字符串名; @关系(type=“Friend”,di

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

@NodeEntity
class Person {
    Long id;
    String name;

    @Relationship(type="Friend", direction = Direction.OUTGOING)
    public List<Person> friends;
}
@NodeEntity
班子{
长id;
字符串名;
@关系(type=“Friend”,direction=direction.OUTGOING)
公开好友名单;
}
假设(1,“亚历克斯”)(2,“约瑟夫”)(3,“盖伊”)的朋友(4,“Nati”)(5,“Amit”)的朋友,使用以下代码:

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请求了人员,并得到了一个包含5个ID的Iterable,这似乎很奇怪(当然是不需要的)。有人知道这是为什么吗?这是一个bug吗?

这是设计的。OGM有一个搜索深度的概念。默认情况下(在您的示例中是显式的),搜索深度为1,这意味着从图形中获取请求的对象及其近邻。如果不希望出现这种行为,可以显式设置搜索深度。将其设置为零,如下所示:

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

将只获取请求的对象。

这个问题现在在1.1.4-SNAPSHOT版本中得到了修复。

我想你没有理解发生了什么,它返回Alex(包含Joseph和Guy)和Nati(包含Amit),直到这里一切正常,但奇怪的是它还返回了Iterable中的3个Person对象(Amit、Joseph和Gut)。另一方面,如果Person与Job类型的对象有关系,它不会将其加载到iterable中,而只会将其返回到相应Person对象下面。仅仅因为子对象与父对象的类型相同,它就将其添加到Iterable
session.loadAll(Person.class,Arrays.toList(new Long(){1L,4L}),0)
不会填充Alex和Nati objectsSorry Nayish上的好友关系,我误解了你的意思。是的,我希望创建五个对象,但是Iterable我希望只包含id请求的两个对象。所以这看起来像一个bug,我在这里提出了一个问题:谢谢,如果你也看这个问题,我会很高兴:太好了!谢谢你的快速修复!