提问者:小点点

cypher-dsljava展开收藏


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

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

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

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

多谢了。


共1个答案

匿名用户

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

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();
}