我是cypher-dsljava的新手。问题是我们需要在查询中使用动态关系类型,但在我们当前的查询中,这还不受支持,也不适用于Spring spel。因此,我们决定使用cypher-dsl。我需要构建一个语句,该语句使用一组字符串来展开,但找不到方法。
"MATCH (source:Browse{nodeId: $sourceId})
UNWIND $destIds as destId
MERGE (destination:Phantom{nodeId: destId}) "
第二行中的$desIds是现在使用集合的地方,在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();
}