如何在spring中编写neo4j的动态查询?

时间:2014-08-01 18:54:14

标签: neo4j spring-data-neo4j

我正在实施关系搜索。我将关系类型列表作为参数,我也想使用节点的属性来进行查询。

Example :
In neo4j, assume that I have following nodes and relationships.
node (name:"a") - like - node(name:"b")
node (name:"a") - follow - node(name:"c")
node (name:"a") - follow -node(name:"e")
node(name:"a") - like- node(name:"d")
node (name:"s") - like - node(name:"b")
node (name:"s") - follow - node(name:"g")
node (name:"s") - follow -node(name:"e")
node(name:"s") - like- node(name:"v")

对于搜索,我将传递关系类型列表

示例查询:找到喜欢名称为“b”的节点的节点,并跟随名称为“c”的节点 结果应该是名为“a”的节点。

但喜欢和关注查询将是动态的。 (任意数量) 如何在春天写这样的查询?

1 个答案:

答案 0 :(得分:1)

使用Neo4jTemplate或执行动态Cypher查询 将其作为方法添加到您的实体的存储库中,例如。 UserRepository(然后它在结构上是静态的,带参数是动态的。)

MATCH (u:User {name:{user}})-[:LIKES]->(t:Thing {name:{thing}}),
      (u:User {name:{user}})-[:FOLLOWS]->(f:User {name:{friend}})
RETURN u;

您还可以从CypherDSLRepository扩展存储库接口,以执行动态CypherDSL查询。