Я использую spring-data-neo4j V4 и ищу решение, как извлекать объекты, которые не связаны напрямую с загруженным объектом. Объяснить:
У меня есть 3 объекта в моей базе данных neo4j.
@NodeEntity(label="membership")
public class Membership extends AbstractEntity{
public Membership(){ }
private String membershipId;
@Relationship(type = "IN_YEAR", direction = Relationship.OUTGOING)
private Set<Year> year = new HashSet<>();
//getter+setter
}
@NodeEntity(label="year")
public class Year extends AbstractEntity{
public Year(){}
private String name;
private String membershipId;
@Relationship(type = "IN_MONTH", direction = Relationship.OUTGOING )
private Set<Month> month = new HashSet<>();
//getter+setter
}
@NodeEntity(label="month")
public class Month extends AbstractEntity{
private String name;
//getter+setter
}
Когда я вызываю свой MembershipRepository
и загружаю Membership
по идентификатору:
membershipRepository.findByMembershipId(id);
объекты year
будут извлечены, а объекты month
— нет. Может ли кто-нибудь сказать, что является лучшим или рекомендуемым способом загрузки объектов month
при загрузке объекта membership
? Как написано в http://docs.spring.io/spring-data/neo4j/docs/current/reference/html/ @Fetch
устарел с версии 4, поэтому мне нужно другое решение.
РЕДАКТИРОВАТЬ: я прочитал в http://docs.spring.io/spring-data/neo4j/docs/current/reference/html/ обходной путь для выборки, просто используйте load
методы из файла Neo4jTemplate
. Итак, я загружаю месяцы для каждого года:
Set<Year> fetchedYear = new HashSet<>();
for(Year year : ms.getYear()){
fetchedYear.add(neo4jTemplate.load(Year.class, year.getId(), 1));
}
ms.setYear(fetchedYear);
Но есть ли лучшее решение?