gpt4 book ai didi

java - Neo4jRepository 中的 findAll 方法对于嵌套属性返回 null

转载 作者:行者123 更新时间:2023-12-02 09:03:17 25 4
gpt4 key购买 nike

我的程序的结构是:

  • 学校
    • 董事会
      • 等级
        • 主题
          • 主题

学校.java

@NodeEntity
@NoArgsConstructor
@Getter
@Setter
public class School extends Entity {
private String name;
@Relationship(type = "UNDER")
private Board board;
private String address;
private String phone;

@Override
public String toString() {
return "School{" +
"name='" + name + '\'' +
", board=" + board +
", address='" + address + '\'' +
", phone='" + phone + '\'' +
'}';
}
}

Board.java

@NodeEntity
@NoArgsConstructor
@Getter
@Setter
public class Board extends Entity {
private String name;
@Relationship(type = "HAS")
private List<Grade> grades;

@Override
public String toString() {
return "Board{" +
"name='" + name + '\'' +
", grades=" + grades +
'}';
}
}

SchoolRepository.java

@Repository
public interface SchoolRepository extends Neo4jRepository<School, Long> {
}

这是一个 spring-boot 项目,我有相关的 Controller 和服务。

问题是 schoolRepository.findAll() 对于 board 中存在的 grades 返回 null。

但是完整的数据会显示在数据库中。

输出我正在大摇大摆:

[
{
"id": 5,
"name": "Bishops",
"board": {
"id": 14,
"name": "CBSE",
"grades": null
},
"address": "Nagpur",
"phone": "1234567891"
},
{
"id": 15111,
"name": "Conrads",
"board": {
"id": 15132,
"name": "ICSE",
"grades": null
},
"address": "Agra",
"phone": "789456123"
}
]

我做错了什么?

最佳答案

这是因为 findAll 的默认深度为 1。因此会加载 School 及其 Board,但不会加载 Grades 董事会,因为成绩位于学校的深度 2 处。

如果将深度参数 2 传递给 findAll,则会加载成绩。

关于java - Neo4jRepository 中的 findAll 方法对于嵌套属性返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60014635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com