使用neo4j-ogm,我寫了下面的代碼,它包含兩個數據庫調用。我希望它只有一個數據庫調用。用Neo4jSessionFactory.queryForObject(或類似的)加載所有相關實體
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方法那樣支持可變深度。
工作就像一個魅力。謝謝! –