我真的希望這沒有被問及我的搜索技能缺乏。目前我正在學習Spring數據如何通過其餘的api(spring-data-neo4j-rest)與neo4j獨立服務器進行交互,並在迭代查詢結果時遇到了一個有趣的問題。無法閱讀neo4j休息api查詢結果interently
我通過創建Instant Spring Tool Suite一書中的neo4j項目(使用嵌入式數據庫)開始,驗證它是否有效,將項目升級到最新版本的Spring,驗證該項目是否有效,然後指向它一個獨立的服務器進行必要的更改。
我能夠在我的JUnit測試用例中創建節點,但是當針對具有註釋查詢的方法運行測試用例時,它似乎無法正常工作。我試着尋找可能遇到問題的例子和其他人,並且相信這是我相對缺乏經驗是問題的主要來源。
下面是該查詢的代碼: @Query( 「MATCH(X {名稱:{0}})< - [作用:MEMBER_OF] - (僱員)」 +「返回不同employee.firstName + '' + employee.lastName as name,「 +」role.title as title「) Iterable> findEmployeesAndRolesByProjectName(String prjName);
下面是測試情況:
@Transactional
public void shouldReturnEmployeesAndRolesByProject() {
Project projectX = template.save(new Project("Project X"));
Project projectY = template.save(new Project("Project Y"));
Employee johnDoe = template.save(new Employee("John", "Doe"));
johnDoe.assignedTo(projectX, "Software Engineer");
johnDoe.assignedTo(projectY, "Business Analyst");
template.save(johnDoe);
Employee janeDoe = template.save(new Employee("Jane", "Doe"));
janeDoe.assignedTo(projectX, "Project Manager");
template.save(janeDoe);
Iterable<Map<String, String>> projectRoles = projectRepository
.findEmployeesAndRolesByProjectName("Project X");
Map<String, String> role1 = projectRoles.iterator().next();
System.out.print(role1.get("name") + ' ' + role1.get("title") + '\n');
assertEquals("John Doe", role1.get("name"));
assertEquals("Software Engineer", role1.get("title"));
Map<String, String> role2 = projectRoles.iterator().next();
System.out.print(role2.get("name") + ' ' + role2.get("title") + '\n');
assertEquals("Jane Doe", role2.get("name"));
assertEquals("Project Manager", role2.get("title"));
Map<String, String> role3 = projectRoles.iterator().next();
System.out.print(role3.get("name") + ' ' + role3.get("title") + '\n');
assertEquals("John Doe", role3.get("name"));
assertEquals("Software Engineer", role3.get("title"));
}
通過REST客戶端,導致以下運行查詢時,JSON響應:
{
columns: [2]
0: "name"
1: "title"
-
data: [2]
0: [2]
0: "John Doe"
1: "Software Engineer"
-
1: [2]
0: "Jane Doe"
1: "Project Manager"
-
-
}
當通過地圖迭代結果似乎只拉第一個json響應,導致測試單元失敗,因爲它期望名爲「Jane Doe」。我添加了這些印刷品以查看它在角色1和2中的數據,並在每種情況下都印刷了「John Doe」和「Software Engineer」。我將測試更改爲在角色2中查找John Doe記錄,並添加了第三次迭代,期望它失敗,因爲結果集應該只包含兩條記錄,但也會返回John Doe記錄。
對於長時間的解釋我表示歉意,但是任何人都可以指向正確的方向來閱讀查詢中的響應嗎?