Spring Data Elasticsearch自定义@Query,包含10个以上的参数

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

我使用的是spring-boot-starter-data-elasticsearch 2.1.0.RC1。

我有一个自定义查询(通过@Query注释),我想传递11个参数。查询如下所示:

{
      "bool" : {
        "must" : [
          {
            "range" : {
              "attribute0" : { "gte" : ?0, "lte" : ?1 }
            }
          },
          {
            "range" : {
              "attribute1" : { "gte" : ?2, "lte" : ?3 }
            }
          },
          {
            "term": { "attribute2": "?4" }
          },
          {
            "term": { "attribute3": "?5" }
          },
          {
            "term": { "attribute4": "?6" }
          },
          {
            "term": { "attribute5": "?7" }
          },
          {
            "term": { "attribute6": "?8" }
          },
          {
            "term": { "attribute7": "?9" }
          },
          {
            "term": { "attribute8": "?10" }
          }
        ]
      }
    }

在我的存储库中,它看起来像这样:

@Query("{\"bool\":{\"must\":[{\"range\":{\"attribute0\":{\"gte\":?0,\"lte\":?1}}},{\"range\":{\"attribute1\":{\"gte\":?2,\"lte\":?3}}},{\"term\":{\"attribute2\":\"?4\"}},{\"term\":{\"attribute3\":\"?5\"}},{\"term\":{\"attribute4\":\"?6\"}},{\"term\":{\"attribute5\":\"?7\"}},{\"term\":{\"attribute6\":\"?8\"}},{\"term\":{\"attribute7\":\"?9\"}},{\"term\":{\"attribute8\":\"?10\"}}]}}")
Page<Entity> findAllByAttributes(
          Integer param0, Integer param1, 
          Integer param2, Integer param3, 
          String param4, String param5,
          String param6, String param7,
          String param8, String param9,
          String param10, Pageable pageable);

问题是,我不能使用超过10个参数(单个数字索引?0到?9)。占位符?10被解析为占位符1,附加零。

我在Spring Data Elasticsearch参考文档中找不到任何有关参数数量限制的内容。

如何将超过10个参数传递给@Query?

spring-boot elasticsearch spring-data spring-data-elasticsearch
1个回答
1
投票

我也有这个问题。我会提交一个错误。

可怜的勒芒尝试使用编号如?00,?01,?02

在代码中挖掘问题不在正则表达式中,而是看到here的替换命令

result.replace(group, getParameterWithIndex(accessor, index));

这当然将取代所有,并认为?1需要在?1?10被替换

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