Spring Data弹性命名查询来自外部文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Data弹性命名查询来自外部文件相关的知识,希望对你有一定的参考价值。

在我们的项目中,我们需要在外部文件中管理Elasticsearch查询。我们使用Spring Data Elastic,因此我们可以使用@Query。但我不想这样硬编码:

@Query("{"bool" : {"must" : {"field" : {"name" : "?0"}}}}")

我想指出一些外部文件:我看到@Query有name参数,但我找不到它应该如何工作的例子

这要我想要:

application.properties:

my.query = {"bool" : {"must" : {"field" : {"name" : "?0"}}}}

和:

@Query(name = "my.query")

或者可能是我应该指向查询所在文件的名称。我找到了JPA示例,但是如何用弹性来完成它?任何帮助将是每个appriciated

答案

与使用namedQueriesLocation中的EnableJpaRepositories参数配置命名查询属性文件的位置的位置相同,您可以在EnableElasticsearchRepositories中使用相同的参数。

另一种方法是使用默认位置文件META-INF/elasticsearch-named-queries.properties

例如:

@Configuration
@EnableElasticsearchRepositories(namedQueriesLocation = "classpath:*-named-queries.properties")
public class ElasticsearchConfiguration {
    ...
}

以上是关于Spring Data弹性命名查询来自外部文件的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate 命名查询和 Spring Data SQL 注入

是否可以将Spring Data Couchbase映射到外部文档(来自依赖)?

Spring Data JPA - 命名查询忽略空参数

我可以限制使用 JPQL 命名查询的 Spring Data 查询方法的查询结果吗?

如何使用spring将查询外部化到xml文件

使用spring boot从外部url下载文件