【发布时间】:2020-03-23 16:31:54
【问题描述】:
希望你能帮助我:
目标
我的目标是获取一个具有直接邻居的实体。
设置
假设我有Person 班级:
@NodeEntity(label = "Person")
public class Person {
...
@Relationship(type = "HAS_FRIEND")
private Person friend;
...
}
这是我的PersonRepository:
public interface PersonRepository extends Neo4jRepository<Person, Long> {
Person findByName(String name);
}
现在假设我有 4 个人
吉姆、鲍勃、爱丽丝、彼得
他们是这样相关的:Jim HAS_FRIEND Bob HAS_FRIEND Alice HAS_FRIEND Peter
我的期望
深度为 1:
当调用 findByName("Jim") 时,它应该返回一个带有
的 Person 实例- 姓名 => “吉姆”
- friend => 一个名为“Bob”的 Person 实例
- bob.friend => 空
实际
我得到一个包含所有孙子的 Person 实例
吉姆
Jim.friend => 鲍勃
Bob.friend => 爱丽丝
Jim.getFriend().getFriend().getFriend() => 彼得
到目前为止我尝试了什么
-
@Depth(value = 2)的使用无效,将返回 实际 - 尝试使用
Query和Param注释:
@Query("MATCH " +
"(p:Person {name:{name}})" +
"Return p")
-
@JsonIgnoreProperties是没有选择的,因为在其他情况下我需要这个链
编辑
我正在使用spring-boot-starter-data-neo4j version 2.2.5
再次使用spring-data-neo4j version 5.2.5
【问题讨论】:
-
我尝试在 github.com/spring-projects/spring-data-neo4j/blob/… 的 Spring Data Neo4j 的测试设置中重现此作为初学者。我将
User关系设置为传出,并修改了创建测试库的查询以匹配您的场景。对我来说,@Depth正在处理您的预期行为。 -
有趣的事情,今天再次尝试重现它......工作正常。深度为 1,符合预期。
标签: java neo4j spring-data-neo4j