spring-data-neo4j 中的深度注释不起作用吗?
Is depth annotation in spring-data-neo4j not working?
希望你能帮到我:
目标
我的目标是获取与其直接相邻的实体。
设置
假设我有 Person
Class:
@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") 时,它应该 return 一个具有
的 Person 实例
- 姓名 => "Jim"
- friend => 名称为 "Bob"
的 Person 实例
- bob.friend => 空
实际
我得到一个包含所有孙子的 Person 实例
吉姆
Jim.friend => 鲍勃
Bob.friend => 爱丽丝
Jim.getFriend().getFriend().getFriend() => 彼得
到目前为止我尝试了什么
- 使用
@Depth(value = 2)
无效,return 会像 Actual
- 尝试使用
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
无法用我自己的测试设置重现该行为。也许在 neo4j 中处理旧数据?我不知道。
如果有人知道更多,欢迎回答
希望你能帮到我:
目标
我的目标是获取与其直接相邻的实体。
设置
假设我有 Person
Class:
@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") 时,它应该 return 一个具有
的 Person 实例- 姓名 => "Jim"
- friend => 名称为 "Bob" 的 Person 实例
- bob.friend => 空
实际
我得到一个包含所有孙子的 Person 实例
吉姆
Jim.friend => 鲍勃
Bob.friend => 爱丽丝
Jim.getFriend().getFriend().getFriend() => 彼得
到目前为止我尝试了什么
- 使用
@Depth(value = 2)
无效,return 会像 Actual - 尝试使用
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
无法用我自己的测试设置重现该行为。也许在 neo4j 中处理旧数据?我不知道。
如果有人知道更多,欢迎回答