使用 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 方法那样支持可变深度。