【问题标题】:Is depth annotation in spring-data-neo4j not working?spring-data-neo4j 中的深度注释不起作用吗?
【发布时间】: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() => 彼得

到目前为止我尝试了什么

  1. @Depth(value = 2) 的使用无效,将返回 实际
  2. 尝试使用QueryParam 注释:
    @Query("MATCH " +
         "(p:Person {name:{name}})" +
         "Return p")
  1. @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


【解决方案1】:

无法使用我自己的测试设置重现该行为。也许在 neo4j 中处理旧数据?我不知道。

如果有人知道更多,请随时回答

【讨论】:

    猜你喜欢
    • 2021-08-05
    • 2015-06-12
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    • 2016-11-29
    相关资源
    最近更新 更多