簡體   English   中英

Spring Data Neo4j:處理關系的正確方法?

[英]Spring data neo4j: correct way to handle relationships?

我有User實體; 該用戶可以是多個組的成員,也可以是一個組織的成員。 有幾種處理這種關系的選項:

  1. User具有字段Set<Group> groupsOrganization organization
  2. GroupOrganization具有字段Set<User> users
  3. 這兩個選項可以同時使用(雙向關系)

此外,還有用於指定方向的關系的注釋:

Spring Data Neo4j默認情況下確保任何兩個給定實體之間只有一種給定類型的關系。 此規則的例外情況是,當兩個相同類型的實體之間的關系被指定為“出站”或“入站”時。 在這種情況下,兩個實體之間可能具有給定類型的兩種關系,任一方向都具有一種關系。

如果您不關心方向,則可以指定direction = Relationship.UNDIRECTED,這將確保兩個節點實體之間的路徑可從任一側導航。

來源: 良好的人際關系:Spring Data Neo4j指導書

我希望盡快獲得一組用戶和該組中的用戶時,我最終采用了同時使用上面列出的兩個選項的方法,並且將每個關系都注釋為UNDIRECTED因為它看起來像像通用方法 它有什么缺點嗎? 如果是這樣,哪種方法更好?

由於您要為一個用戶以及一個組中的用戶檢索組,因此按照#1和#2中的描述來設置對象模型是很有意義的。

UNDIRECTED在這里不是一個很好的選擇,因為它暗示着用戶和組之間的關系可以是任意方向的,而且我猜您在圖形模型中不希望這樣做。 對於不需要關心方向的關系(例如(user1)-[:FRIEND]-(user2) ),這非常(user1)-[:FRIEND]-(user2)但對於其他情況則不然。 我會在這兩個類中都使用OUTGOINGINCOMING ,具體取決於您與用戶和組之間的實際關系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM