我想在neo4j中創建一個關係,其中一個人有一個朋友列表。我可以用兩種方式使用彈簧數據來做到這一點。使用Spring-Data在Neo4J中創建關係
a)創建一個具有列表重複列表的人類,並用@Relationship對其進行註釋。
@NodeEntity(label="Person")
public class Person {
@GraphId
private Long id;
private String firstName;
private String lastName;
private String email;
@Relationship(type = "FRIEND_WITH")
List<Person> friends;
}
b)無任何列表創建Person對象,並創建 「FRIEND_WITH」 與Cypher支架一樣
@Query "CREATE (a)-[FRIEND_WITH]->(b)"
的關係,什麼都該方法的優點/ disadvanages?
Neo4J支持單向和雙向關係。因此,如果希望玩弄指導,同時保持java類數據結構的固定,那麼必須使用自定義查詢。我感覺,最好從類結構中分離出關係,並在需要時通過密碼來動態創建或刪除它們。我只是想知道你的決定。 – Soumya
嚴格地說,Neo4j支持雙向遍歷:一個關係總是用一個方向來定義,但是你可以從任何一端來遍歷它。 我不確定'玩弄方向'是什麼意思,但SDN 4支持INCOMING,OUTGOING和UNDIRECTED邊緣方向。當兩個節點之間存在語義自反關係時,UNDIRECTED非常有用 - 例如, (人) - [:FRIENDS_WITH] - >(人)。在這裏你不關心方向,你只是想確保兩個朋友在你的域中相互連接。 你覺得被迫使用查詢的用例是什麼? – Vince
假設我有一個人A跟隨着社交網絡中的其他人。所以在Person對象A中有一個「List」,其中包含他/她所關注的人員列表。這是一個即將離任的關係。爲了得到A所關注的人,我只需要遍歷列表。現在,其他人也可能跟隨A.因此,要獲得所有那些跟隨A的人,我需要寫一個自定義查詢,因爲之前的列表只會給我A以下的人 –
Soumya