【问题标题】:Rendering a dynamic list of labels from a List<String>从 List<String> 呈现标签的动态列表
【发布时间】:2023-02-21 18:43:37
【问题描述】:

我需要做类似的事情:

@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】:

    目前,只有将 List&lt;String&gt; 与 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(..)})可能是有意义的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-12
      • 1970-01-01
      • 2017-03-31
      • 2015-02-18
      • 2021-11-11
      • 1970-01-01
      • 2021-06-27
      • 2011-12-03
      相关资源
      最近更新 更多