目前,我们使用 Spring Data JPA 和 MySql 数据库 DataTabaleRepository与 JPA 配合良好。现在我们正在将数据转移到Spring data elasticserch,但是DataTabaleRepository不与此合作。有没有其他选择,或者我如何为此实现自定义存储库?
最佳答案
spring-data-jpa-datatables没有实现对 ElasticsearchRepository 的支持,正如您所说,并使用 Spring Data for Elasticsearch 未实现的规范 API,因此扩展它需要一些工作。
您需要做的是创建自己的ElasticsearchRepositoryFactoryBean (即 ElasticsearchDataTablesRepositoryFactoryBean)和您自己的 AbstractElasticsearchRepository 实现它实现了 spring-data-jpa-datatables 的细节,就像 DataTablesRepositoryImpl 一样。您还应该定义自己的 DataTablesRepository (扩展 ElasticsearchRepository 的 ElasticsearchDataTablesRepository)使用相同的方法。
org.springframework.data.jpa.datatables.mapping 类可以重用,但您必须重新创建 SpecificationFactory 中找到的逻辑。对于elasticsearch使用QueryBuilders ,这将是我想象中最耗时的部分。
完成后,您可以使用 @EnableElasticsearchRepositories,就像 spring-data-jpa-datatables 所描述的那样:
@EnableElasticsearchRepositories(repositoryFactoryBeanClass = ElasticsearchDataTablesRepositoryFactoryBean.class))
并使用 ElasticsearchDataTablesRepository 接口(interface)扩展您的存储库,然后就可以开始了。
作为引用,您应该查看 SpecificationFactory和 AbstractElasticsearchRepository (搜索方法)并熟悉Elasticsearch QueryBuilders .
关于java - Spring data Elasticsearch 中的 DataTableRepository,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41072324/