spring-data/neo4j@query注解属性替换

ahy6op9u  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(705)

我正在做一个基于springdata/neo4j的推荐服务,遇到了一个问题 @Query 注解。我正试图通过一个属性(的 network_userid )进入密码查询:

package io.woolford.neo4j.repository;

import io.woolford.neo4j.entity.PageUrl;
import org.springframework.data.neo4j.annotation.Query;
import org.springframework.data.neo4j.repository.Neo4jRepository;
import org.springframework.data.repository.query.Param;

import java.util.List;

public interface RecommendationsRepository extends Neo4jRepository<PageUrl, Long> {
    @Query("MATCH (n {id: '$network_userid' }) RETURN n")     // simplified query for brevity
    List<PageUrl> getRecommendations(@Param("network_userid") String network_userid);
}

我认为这很简单,只要在属性名前面放一个美元符号,就可以用属性值替换属性名(如上所述)。我预料到了:

MATCH (n {id: '1447e32a-3381-4e61-a8ae-9a05b8df4ddb'}) RETURN n

当我打开调试时,cypher查询似乎没有用以下值替换属性:

[nio-8080-exec-1] o.n.o.drivers.bolt.request.BoltRequest   : Request: MATCH (n {id: '$network_userid' }) RETURN n with params {0=1447e32a-3381-4e61-a8ae-9a05b8df4ddb, network_userid=1447e32a-3381-4e61-a8ae-9a05b8df4ddb}

为了更好地衡量,我做了一个数据包捕获,以查看通过网络发送的内容:

...d'...............+MATCH (n {id: '$network_userid' }) RETURN n..0.$1447e32a-3381-4e61-a8ae-9a05b8df4ddb.network_userid.$1447e32a-3381-4e61-a8ae-9a05b8df4ddb......?..n.....

... 这再次表明,房地产替代没有发生。
你能看出我做错了什么吗?
源代码:https://github.com/alexwoolford/snowplow-neo4j-recommender

7uhlpewt

7uhlpewt1#

查询的唯一问题是,您正在转义 '$network_userid' 就像一根绳子,但你应该: @Query("MATCH (n {id: $network_userid }) RETURN n") 没有字符串文字指示。

相关问题