为什么参数索引不起作用?

时间:2018-02-19 07:15:02

标签: spring-data-neo4j

在文档中,https://docs.spring.io/spring-data/neo4j/docs/current/reference/html/

它使用{0}来引用参数' movieTitle'。

@Query("MATCH (movie:Movie {title={0}}) RETURN movie")
Movie getMovieFromTitle(String movieTitle);

但是,在我自己的代码中,如果我使用" {title = {0}",我的IntelliJ总是会报告语法错误。我可以通过将其更改为

来解决问题
{title:{movieTitle}

这里我必须使用实际的参数名称和冒号加{}。

这有什么诀窍吗?我不认为文档是错误的。

问题2:

如果我想要节点标签"电影"要成为参数,它还会显示错误消息:

@Query("MATCH (movie:{label} {title={0}}) RETURN movie")
Movie getMovieFromTitle(String movieTitle, String label);

1 个答案:

答案 0 :(得分:0)

我不知道您使用的IntelliJ版本,但第一个查询是正确的。在spring-data-neo4j project中还有一个测试用例。

无法使用第二种查询语法,因为在执行查询的数据库级别上不支持此语法。如果在调用DB之前在SDN中支持,则每次执行查询时都必须解析查询(并替换模式),并且SDN将无法解析查询一次,然后只需添加参数后续调用中的值。这将降低执行带注释的查询函数的性能。