0

Momentan verwenden wir Federdaten JPA mit MySql-Datenbank mit DataTabaleRepository, die gut mit JPA funktioniert. Jetzt verschieben wir unsere Daten auf Spring-Daten elasticserch, aber DataTabaleRepository funktioniert damit nicht. Gibt es dafür eine Alternative oder wie kann ich dafür ein eigenes Repository implementieren?DataTableRepository im Frühjahr Daten Elasticsearch

+0

Welcher Teil funktioniert genau nicht? – Veeram

+0

Ich möchte die Antwort auf die gleiche Weise anpassen in https://github.com/darrachequesne/spring-data-jpa-datatables ... –

Antwort

1

spring-data-jpa-datatables implementiert keine Unterstützung für ElasticsearchRepository, wie Sie sagen und verwenden Sie die Spezifikation API, die nicht von Spring Data für Elasticsearch implementiert wird, so würde es einige Arbeit zu erweitern.

Was Sie tun müssen, ist Ihre eigene ElasticsearchRepositoryFactoryBean erstellen (dh. ElasticsearchDataTablesRepositoryFactoryBean) und eine eigene Implementierung von AbstractElasticsearchRepository, die die Besonderheiten der Feder-data-JPA-Datentabellen wie DataTablesRepositoryImpl implementiert. Sie sollten auch Ihre eigenen DataTablesRepository (ElasticsearchDataTablesRepository, die ElasticsearchRepository erweitert) mit denselben Methoden definieren.

Die org.springframework.data.jpa.datatables.mapping Klassen können wiederverwendet werden, aber Sie werden die Logik in SpecificationFactory für Elasticsearch mit QueryBuilders gefunden neu erstellen müssen, die die meiste Zeit in Teil stelle ich mir sein wird.

Wenn Sie fertig sind, können Sie die @EnableElasticsearchRepositories verwenden nur durch Feder-data-JPA-Datentabellen beschrieben wie IE .:

@EnableElasticsearchRepositories(repositoryFactoryBeanClass = ElasticsearchDataTablesRepositoryFactoryBean.class)) 

Und Ihre Repositories mit Ihrem ElasticsearchDataTablesRepository Schnittstelle erweitern und Sie sind gut gehen.

Als Referenz sollten Sie sich SpecificationFactory und AbstractElasticsearchRepository (die Suchmethode) anschauen und sich mit Elasticsearch QueryBuilders vertraut machen.

+0

Vielen Dank :) –