Загрузка отношений с помощью spring-data-neo4j - PullRequest
0 голосов
/ 20 февраля 2019

Я прилагаю ниже двух простых узлов, которые связаны отношениями.Я опускаю конструкторы и геттеры и сеттеры для краткости.

@NodeEntity
public class Person {

  @Id
  @GeneratedValue
  private Long id;

  private String name;

  @Relationship(type = "ACTED_IN")
  private List<Movie> movies = new ArrayList<>();

}


@NodeEntity
public class Movie {
    @Id
    @GeneratedValue
    private Long id;

    private String title;

    @JsonIgnoreProperties("movie")
    @Relationship(type = "ACTED_IN", direction = Relationship.INCOMING)
    private List<Role> roles;

}

@RelationshipEntity(type = "ACTED_IN")
public class Role {
  @Id
  @GeneratedValue
  private Long id;

  @StartNode
  private Person person;

  @EndNode
  private Movie movie;
}

Мой вопрос заключается в следующем.Если при загрузке человека с помощью интерфейса репозитория я вижу, что список фильмов лично всегда пуст.Это происходит, даже если у человека есть отношения («ACTED_IN») с фильмом.

Если я пока что загружаю фильм, я вижу, что список ролей заполнен правильно. Это ожидаемое поведение? Мне это кажется странным?Может кто-нибудь дать лучшее объяснение.

1 Ответ

0 голосов
/ 21 февраля 2019

Вам необходимо изменить тип ваших отношений в Person с List<Movie> на List<Role>.Если вы загружаете Person с текущей конструкцией, Neo4j-OGM (библиотека отображения Spring Data Neo4j) не знает, какое отношение является правильным, потому что вы определили тип ACTED_IN для Person до Movie s, а нетолько для «только что набранного» отношения с помощью аннотации @Relationship, но также как @RelationshipEntity.

Изменение @Relationship для указания на @RelationshipEntity решит проблему.

...