spring-data-neo4j使用动态密钥和动态值进行查询

时间:2018-03-14 09:06:02

标签: neo4j spring-data-neo4j

使用动态密钥和动态值

spring-data-neo4j 查询,

如下面的代码:

public interface NodeReposity extends Neo4jRepository<Node,Long> {
    @Query("MATCH(n:Node{{key}={value}})return n")
    Iterable<Node> queryByProperty(@Param("key")String key,@Param("value") String value);
}

但它说{key}必须是字符串中的变量,例如MATCH(n:Node{name={value}})return n。不能是{key}。但是,我的财产的关键是动态,如价值,如何实施,是否可能?

1 个答案:

答案 0 :(得分:1)

简答:查询将被发送&#34;因为它是&#34;到数据库,因为cypher只支持值的占位符,这将导致错误。

稍微长一点的回答:当执行方法时,Spring Data Neo4j会查看它是否已预处理查询并处理和缓存它或只是从缓存中加载它。这样做是为了缩短从应用程序执行方法所需的时间。 预处理意味着SDN知道那里有哪些参数,只需在调用方法时将值添加到正确的位置。 如果SDN为查询提供的功能多于cypher,则每次调用方法时都必须处理查询以创建可与Neo4j一起使用的新查询