【发布时间】:2015-09-15 18:49:44
【问题描述】:
使用 neo4j-ogm,我编写了以下代码,其中包含两个数据库调用。我希望它只有一个数据库调用。
public Member loadMemberByDomainSpecificId(String domainSpecificId) {
String query = "match (m:Member {domainSpecificId: {domainSpecificId}}) return m;";
Map<String, String> parameters = new HashMap<String, String>();
parameters.put("domainSpecificId", domainSpecificId);
Session neo4jSession = Neo4jSessionFactory.getInstance().getNeo4jSession();
Member member = neo4jSession.queryForObject(Member.class, query, parameters);
return super.find(member);
}
第一个数据库调用是
neo4jSession.queryForObject(Member.class, query, parameters);
第二个数据库调用是
return (Member)super(find(member);
super 是return session.load(Member.class, member.getId(), 1);
其中session 是neo4jSession。
我进行第二次 API 调用是因为第一次 API 调用仅获取节点/对象,而不获取其相关节点/对象。第二个 API 调用刷新节点及其所有关系。
有谁知道我如何通过一次数据库调用有效地完成所有这些工作?
queryForObject 似乎不像许多其他 neo4jSession 方法那样支持可变深度。
【问题讨论】:
标签: neo4j spring-data-neo4j spring-data-neo4j-4 neo4j-ogm