使用新的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似乎很奇怪(当然也不需要)。有谁知道这是为什么?这是一个错误吗?
答案 0 :(得分:1)
这是设计的。 OGM具有搜索深度的概念。默认情况下(在您的示例中,显式)搜索深度为1,表示从图中获取请求的对象及其直接邻居。如果您不想要此行为,则可以明确设置搜索深度。像这样将它设置为零:
session.loadAll(Person.class, Arrays.toList(new Long() { 1L, 4L }), 0)
将仅获取所请求的对象。
答案 1 :(得分:1)
此问题现已在1.1.4-SNAPSHOT版本中修复。