1
我想用Neo4J建模一個社交網絡。這要求用戶可以與另一個用戶有多重關係。當我試圖堅持這些關係時,只有一個存儲。例如,這是測試單元我做的:不能在neo4j中添加多個節點之間的關係
@Test
public void testFindConnections() {
Id id1 = new Id();
id1.setId("first-node");
Id id2 = new Id();
id2.setId("second-node");
idService.save(id2);
id1.connectedTo(id2, "first-rel");
id1.connectedTo(id2, "second-rel");
idService.save(id1);
for (Id im : idService.findAll()) {
System.out.println("-" + im.getId());
if (im.getConnections().size() > 0) {
for (ConnectionType ite : im.getConnections()) {
System.out
.println("--" + ite.getId() + " " + ite.getType());
}
}
}
}
這應該輸出:
-first-node
--0 first-rel
--1 second-rel
-second-node
--0 first-rel
--1 second-rel
然而,輸出:
-first-node
--0 first-rel
-second-node
--0 first-rel
這是我的節點實體:
@NodeEntity
public class Id {
@GraphId
Long nodeId;
@Indexed(unique = false)
String id;
@Fetch
@RelatedToVia(direction=Direction.BOTH)
Collection<ConnectionType> connections = new HashSet<ConnectionType>();
}
而我的關係實體:
@RelationshipEntity(type = "CONNECTED_TO")
public class ConnectionType {
@GraphId Long id;
@StartNode Id fromUser;
@EndNode Id toUser;
String type;
}
問題是什麼?有沒有其他的方法來模擬節點之間的幾種關係?
感謝您的信息!是的,這是非常通用的,這只是一個測試。我想用不同的類型來實現,問題是它們是在運行時定義的。我發現DynamicRelationshipEntity類,但不知道如何使用它,我找不到任何示例。你知道一個有效的例子嗎? – 2013-02-21 23:23:39
使用枚舉作爲rel-types。否則'DynamicRelationshipType.withName(type)'。 – 2013-02-24 20:33:36