【发布时间】:2016-02-11 11:04:41
【问题描述】:
我正在使用 spring-data-neo4j V4 并寻找解决方案如何获取未直接连接到加载实体的实体。解释:
我的 neo4j 数据库中有 3 个实体。
@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 并按 ID 加载 Membership 时:
membershipRepository.findByMembershipId(id);
year 实体将被提取,但 month 实体不会。
在加载membership 实体时,谁能告诉我加载month 实体的最佳或推荐方式是什么?正如http://docs.spring.io/spring-data/neo4j/docs/current/reference/html/ 中所写,@Fetch 自版本 4 以来已过时,因此我需要另一个解决方案。
编辑:
我在http://docs.spring.io/spring-data/neo4j/docs/current/reference/html/ 中阅读了获取的解决方法,只需使用Neo4jTemplate 中的load 方法。
所以我通过以下方式加载每年的月份:
Set<Year> fetchedYear = new HashSet<>();
for(Year year : ms.getYear()){
fetchedYear.add(neo4jTemplate.load(Year.class, year.getId(), 1));
}
ms.setYear(fetchedYear);
但是有更好的解决方案吗?
【问题讨论】:
标签: java spring-data-neo4j spring-data-neo4j-4