gpt4 book ai didi

spring-boot - Spring Data Elasticsearch 自定义@Query 超过10个参数

转载 作者:行者123 更新时间:2023-12-02 22:18:48 26 4
gpt4 key购买 nike

我正在使用 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 Data 是玩弄数据世界的一个非常大的项目

据我所知,我们可以有更多的方法以不同的方式做同样的事情。

Spring 数据多了一个注解,有助于将方法参数视为查询参数。

Annotation: @Param

这个注解可以和方法参数本身一起使用。请找到以下格式,这有助于扩展方法参数计数以用于 spring 数据。

说明:你可以包括N号。带有 @Param 注解的方法参数。请在下面找到有效的表达式来编写注释。

@Param("param0")

现在,当你添加带有方法参数的@Param 注解时,你必须需要在@Query 中指定参数,前缀为冒号(:) 。类似于下面查询中的 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)

关于spring-boot - Spring Data Elasticsearch 自定义@Query 超过10个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53036198/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com