2016-03-04 15 views
2

我有兩個實體,如用戶和帳戶。與帳戶節點 有關的任何20個關係的用戶節點。請找樣本圖像設計連接如何從使用彈簧數據庫的兩個節點之間的關係集合中獲得關係使用GraphRepository的Neo4j

nodelayout image

我需要搜索佔相應使用任何20間關係的用戶。我使用密碼查詢來獲取用戶詳細信息和帳戶。兩個實體之間的關係將是20個關係中的任何一個。所以我不能註釋@RelationshipEntity類型的值。請發現代碼例如 User.java

public class User 
{ 
    private Long id;  
    String fulltextsearch; 

    String user_id; 

    String status; 

    @Relationship(type = "perm") 
    List<Acronym> acronym; 
    ..... 
     ...  
} 

Acronym.java

@JsonIdentityInfo(generator=JSOGGenerator.class) 
@RelationshipEntity 
public class Acronym { 
@GraphId 
    Long id; 
    String acronym; 
    @StartNode 
    private User user; 
    @EndNode 
    private Account account; 
.... 
.... 
} 

Userrepository.java

@RepositoryRestResource(collectionResourceRel = "User", path = "User") 
public interface Userrepository extends GraphRepository<User> { 
    User findByLogin(@Param("login") String login); 

    @Query("MATCH p=(user:User)-[r*0..1]->(account) WHERE user.login =~('(?i).*'+{Login}+'.*') RETURN p") 
    Collection<User> findByloginContaining(@Param("login") String login); 
} 

我試圖爲每個關係(即20關係對象創建對象。 )。我不確定是否有正確的方法來獲得價值。 任何人都可以請幫助我知道取回關係的帳戶?它總是迴歸爲空。

在此先感謝。

回答

1

OGM/SDN 4不支持未知關係類型。關係類型必須在@RelationshipEntity上指定

這樣做的一種方法就像你說的那樣,爲每個類型創建@RelationshipEntity,但這也意味着您必須在User類中指定20個這樣的關係,因爲關係類型不同(即使開始/結束節點是相同的)。這可能不理想,難以管理。

如果您的應用程序主要適用於動態關係類型,則OGM可能不太適合。

注意:僅在OGM 2.x/SDN 4.1中支持將自定義查詢結果映射到實體。你不能返回一個路徑,只有組成路徑的實體,比如節點和rels。

+0

感謝您的寶貴迴應。我將更新我的項目以支持OGM 2.x/SDN 4.1。由於我還處在學習曲線中,能否請您提供帶有示例代碼的任何鏈接以開始。 – kris

+0

參考手冊是一個開始的好地方 - http://docs.spring.io/spring-data/neo4j/docs/4.1.0.M1/reference/html/。然後,https://github.com/neo4j-examples/sdn4-cineasts/tree/4.1上有一個示例項目和一篇博文(2部分系列),網址爲http://graphaware.com/neo4j/2016/02/24 /upgrading-spring-data-neo4j-4-1.html – Luanne

相關問題