Spring Neo4j Pass Node Property作为参数



我试图传递一个属性作为参数。

我已经试过了:

String get_interest="MATCH(user:User{id:{id}})-[watched:WATCHED]->(movie:Movie{title:{title}}) " +
"MATCH(movie)-[:BELONGS_TO]->(category:Category) " +
"MATCH(category)<-[:BELONGS_TO]-(similarMovie:Movie) " +
"WHERE NOT EXISTS((user) -[:WATCHED]->(similarMovie))" +
"RETURN similarMovie Limit 20";

但是它失败了,出现了这个错误:

"error": "Internal Server Error",
"message": "Cypher execution failed with code 'Neo.ClientError.Statement.SyntaxError': Invalid input '{': expected "+" or "-" (line 1, column 24 (offset: 23))

我已经试过了,它工作了:

String get_interest="MATCH(user:User{id:"02331"})-[watched:WATCHED]->(movie:Movie{title:"The Mask"}) " +
"MATCH(movie)-[:BELONGS_TO]->(category:Category) " +
"MATCH(category)<-[:BELONGS_TO]-(similarMovie:Movie) " +
"WHERE NOT EXISTS((user) -[:WATCHED]->(similarMovie))" +
"RETURN similarMovie Limit 20";

但是我想传递其他用户id和标题。

This is my Repository

@Query(get_interest)
Collection<Movie> getMovieByInterest(@Param("id") String id,
@Param("title") String title);

参数被绑定为变量。变量用$:

插入
"MATCH(user:User{id:$id})-[watched:WATCHED]->(movie:Movie{title:$title})"

相关内容

最新更新