从列表中呈现标签的动态列表<String>

问题描述 投票:0回答:1

我需要做类似的事情:

@Query("MATCH (n:`:#{literal(#label)}`) WHERE n.entityId=$entityId  RETURN n")
Mono<VisibilityGroup> findNode(UUID entityId, String label);

但在 OR 中指定标签列表:

Mono<VisibilityGroup> findNode(UUID entityId, List<String> labels);

如果标签是 {"A","B"} 这应该生成:

匹配 (n:A|B) 哪里...

实现此目标的正确语法是什么?

cypher spring-data-neo4j
1个回答
0
投票

目前只有将

List<String>
连接到带有
String
分隔符的
|
才有可能。

String labels = String.join("|", List.of("A", "B"));

String labels = new StringJoiner("|")
        .add("A")
        .add("B")
        .toString();

literal
函数将创建一个
[A,B]
值,该值与模式中的预期模式不兼容(很明显)。 从长远来看,评估是否有可能在包含对 Spring Data Neo4j 的查询的 Spring 表达式语言中集成更专业的关键字(如
#{labels(..)}
)可能是有意义的。

© www.soinside.com 2019 - 2024. All rights reserved.