我使用的是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?
我也有这个问题。我会提交一个错误。
可怜的勒芒尝试使用编号如?00,?01,?02
在代码中挖掘问题不在正则表达式中,而是看到here的替换命令
result.replace(group, getParameterWithIndex(accessor, index));
这当然将取代所有,并认为?1
需要在?1
和?10
被替换