[英]Spring data neo4j: correct way to handle relationships?
我有User
實體; 該用戶可以是多個組的成員,也可以是一個組織的成員。 有幾種處理這種關系的選項:
User
具有字段Set<Group> groups
和Organization organization
Group
和Organization
具有字段Set<User> users
此外,還有用於指定方向的關系的注釋:
Spring Data Neo4j默認情況下確保任何兩個給定實體之間只有一種給定類型的關系。 此規則的例外情況是,當兩個相同類型的實體之間的關系被指定為“出站”或“入站”時。 在這種情況下,兩個實體之間可能具有給定類型的兩種關系,任一方向都具有一種關系。
如果您不關心方向,則可以指定direction = Relationship.UNDIRECTED,這將確保兩個節點實體之間的路徑可從任一側導航。
來源: 良好的人際關系:Spring Data Neo4j指導書
我希望盡快獲得一組用戶和該組中的用戶時,我最終采用了同時使用上面列出的兩個選項的方法,並且將每個關系都注釋為UNDIRECTED
因為它看起來像像通用方法 它有什么缺點嗎? 如果是這樣,哪種方法更好?
由於您要為一個用戶以及一個組中的用戶檢索組,因此按照#1和#2中的描述來設置對象模型是很有意義的。
UNDIRECTED
在這里不是一個很好的選擇,因為它暗示着用戶和組之間的關系可以是任意方向的,而且我猜您在圖形模型中不希望這樣做。 對於不需要關心方向的關系(例如(user1)-[:FRIEND]-(user2)
),這非常(user1)-[:FRIEND]-(user2)
但對於其他情況則不然。 我會在這兩個類中都使用OUTGOING
和INCOMING
,具體取決於您與用戶和組之間的實際關系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.