cypher dsl-java展开一个集合



我是cypher dsl java的新手。问题是,我们在查询中需要一个动态关系类型,但在当前的查询中,这还不受支持,也不适用于spring-spel。因此,我们决定使用密码dsl。我需要构建一个使用字符串集合展开的语句,但找不到方法。

"MATCH (source:Browse{nodeId: $sourceId}) 
UNWIND $destIds as destId 
MERGE (destination:Phantom{nodeId: destId}) "

第二行中的$destIds是现在在spring-data@Query注释中使用集合的地方。

我想要一个例子或解释如何做到这一点。

非常感谢。

要创建密码查询,可以执行以下操作:

public static void main (String... args){
var browse = Cypher.node("Browse")
.withProperties("nodeId", Cypher.parameter("sourceId"))
.named("source");
var destIds = List.of("dest1", "dest2");
var listExpression = Cypher.listOf(destIds.stream().map(s -> (Expression)literalOf(s)).collect(Collectors.toList()));
var dest = Cypher.name("destId");
var destination = Cypher.node("Phantom")
.withProperties("node", dest)
.named("destination");
var statement = match(browse)
.unwind(listExpression).as(dest)
.merge(destination)
.build();
String s = statement.getCypher();
}

最新更新