2015-06-02 54 views
0

我正試圖將我的SDN3嵌入式配置遷移到服務器模式下的Neo4j實例使用SDN 3.3.0(然後通過REST API進行通信)。有沒有辦法用@Query映射對象圖?

當數據庫被嵌入到數據庫中時,很多小命中都沒有什麼大不了,因爲Neo4j能夠以極快的速度處理這類查詢。

但是現在,我從我的應用程序(即在服務器模式)單獨運行我的Neo4j,因爲網絡開銷而不建議進行大量小型查詢。

User user = userRespository.findOne(123); 
user.fetch(user.getFriends()); 
user.fetch(user.getManager()); 
user.fetch(user.getAgency()); 

這將觸發不少的查詢,特別是如果我想獲得,而不是一個用戶,而是一個用戶列表。

我可以使用@Query註釋並獲取用戶和相關實體並將其映射到User對象中嗎?

我在想是這樣的:

@Query("MATCH (u:User)-[r:FRIEND]->(f) RETURN u,r,f" 

是與Spring數據的Neo4j可能這樣的事情? Spring Data Neo4j 4有可能嗎?

回答

1

您可以使用@QueryResult指令定義查詢結果的一類,並讓該查詢方法返回一個類的對象,即:

@QueryResult 
public interface UserWithFriends { 
    @ResultColumn("u") 
    User getUser(); 

    @ResultColumn("f") 
    List<User> friends(); 
} 

@Query("MATCH (u:User)-[:FRIEND]->(f) WHERE u.name={name} RETURN u,f") 
UserWithFriends getUserByName(@Param("name") String name); 
相關問題