是否有可能在@Query处使用cypher动态标签?

时间:2014-05-22 07:38:54

标签: neo4j cypher spring-data-neo4j

我正在使用SDN 3.1.0.RELEASE。 我尝试像

这样的danamic标签查询
@Query("MATCH (n:{0}) RETURN n")
public List<SimpleArticle> findAllByDomain(String domain);

并给出SimpleArticle.class.getSimpleName()之类的String参数 当我启动测试代码时,我遇到了“{0}的语法异常”

所以我将查询更改为

@Query("MATCH (n:`{0}`) RETURN n")

此代码有效,但找不到Domain节点 结果日志是“执行远程密码查询:MATCH(n:`{0}`)RETURN n params {0 = SimpleArticle}”

所以我在查询broswer中运行这个cypher查询

MATCH (n:`SimpleArticle`) RETURN n ; 

它可以工作并找到节点。

我可以在@Query中使用动态标签吗?

1 个答案:

答案 0 :(得分:3)

标签无法参数化。其基本原理是不同的标签可能会导致不同的查询计划。参数化查询始终使用相同的查询计划 - 因此无法实现。

使用&#34;半&#34; - 动态标签的唯一方法是使用字符串连接或Cypher DSL。