Метод findAll в Neo4jRepository возвращает значение NULL для вложенных атрибутов - PullRequest
0 голосов
/ 01 февраля 2020

Структура моей программы:

  • Школа
    • Доска
      • Класс
        • Предмет
          • Топи c

Школа. 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 + '\'' +
                '}';
    }
}

Доска. 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> {
}

Это загрузочный проект, и у меня есть соответствующие контроллеры и службы.

Проблема в том, что что schoolRepository.findAll() возвращает ноль для grades, присутствующего в board.

Однако полные данные отображаются в базе данных.

Вывод, который я получаю от моего чванства:

[
  {
    "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"
  }
]

Что я делаю не так?

1 Ответ

1 голос
/ 02 февраля 2020

Это потому, что глубина по умолчанию для findAll равна 1. Таким образом, School и Board загружаются, но не Grades из Board, поскольку оценки находятся на глубине 2 от школы.

Если вы передадите параметр глубины от 2 до findAll, оценки будут загружены.

...