use*_*337 2 elasticsearch spring-data spring-boot spring-data-elasticsearch
我正在使用 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" }
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
在我的存储库中,它看起来像这样:
@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);
Run Code Online (Sandbox Code Playgroud)
问题是,我不能使用超过 10 个参数(单位数字索引 ?0 到 ?9)。占位符 ?10 解析为占位符 1 并附加零。
我在 Spring Data Elasticsearch 参考文档中找不到有关参数数量限制的任何内容。
如何将 10 个以上的参数传递给 @Query?
Spring Data 是一个玩弄数据世界的非常大的项目
据我所知,我们可以有另一种方法以不同的方式做同样的事情。
Spring data 还有一个注释,有助于将方法参数视为查询参数。
注释:@Param
该注释可以与方法参数本身一起使用。请查找以下格式,它可以帮助扩展方法参数计数以与 Spring 数据一起使用。
说明:您可以包括 N 个号码。带注释的方法参数@Param
。请找到下面的有效表达式来编写注释。
@Param("param0")
Run Code Online (Sandbox Code Playgroud)
现在,当你为方法参数添加这个@Param注解时,你必须需要指定带有@Query
前缀的 参数colon (:)
。像下面查询中的param0一样,
@Query("{"query": {"bool": {"must": [{ "match": {"userId": " :param0 " }}]}}}")
完整示例:您可以看到 org_id 是查询参数。
@Query("{"query": {"bool": {"must": [{ "match": {"userId": ":org_Id"}}]}}}")
List<User> getByOrgId(@Param("org_Id") String orgId)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4528 次 |
最近记录: |