我想知道使用Spring从json在Neo4j中创建图形的最佳方法是什么。想象一下,我有一个简单的NodeEntity Person:
@NodeEntity public class Person {
private Set<Person> friends;
}
我想建立一个json对象之间的友谊图表,如:
{
persons: [
{name:"Fritz", friend:["Hans"]},
{name:"Hans", friends:["Fritz", "Georg"]},
{name:"Georg", friends:["Hans"]}
]
}
我可以使用Spring Data Rest API将json直接反序列化为节点实体和关系吗?
答案 0 :(得分:1)
好问题,过去我只尝试为单个实体写入SD-REST,而不是写有关系的实体。
我可能会编写自己的rest-controller并将JSON转换为正确的对象。
您也可以直接使用Cypher并将json根作为参数json
传递给cypher。
UNWIND {json}.persons as person
// MERGE = get-or-create
MERGE (p:Person {name:person.name})
UNWIND person.friends as friend
// because the friend can come earlier as friend than as a person
MERGE (f:Person {name:friend.name})
// merge on relationship to make sure it only exists once, no matter the direction
MERGE (p)-[:KNOWS]-(f)
此查询可以是SDN存储库的一部分,也可以通过Neo4jTemplate或-Session调用。
在SDN4中,您可以使用直接来自域对象创建的内容。