Generischer Code ist mit Spring-Daten und Querydsl fehlgeschlagen

8

Ich benutze querydsl , deshalb brauche ich keine Methode wie findByName() und alle meine Repository-Schnittstelle sind leer.

Also versuche ich, genre code zu machen, um eine repetitive Schnittstelle mit leeren Methoden zu vermeiden, weil ich viele Klassen in meinen Entitäten habe, die durch Hibernate gemappt wurden.

%Vor%

Wenn ich meinen Server starte, erhalte ich folgende Fehlermeldung:

%Vor%

gibt es auch keine Möglichkeit, ein generisches Repository zu erstellen, wie ich es versuche?

    
Youssef 21.11.2014, 06:19
quelle

2 Antworten

1

Spring-Daten versuchen, Beans für alle von Ihnen erstellten Schnittstellen zu erstellen, die JpaRepository erweitern. Wenn Sie eine Art Basis-Repository haben möchten, das nicht verwendet wird, markieren Sie Ihre Schnittstelle mit @ NoRepositoryBean

    
Nadir 21.11.2014 07:53
quelle
0

Repository ist eine marker interface für spring, mit der Sie Ihre eigenen erweiterten Repositories finden und ein Repository erstellen können, indem Sie den Typ der Entität extrahieren. Wir können in RepositoryFactorySupport sehen:

  

Factory-Bean zum Erstellen von Instanzen einer gegebenen Repository-Schnittstelle.   Erstellt einen Proxy, der die konfigurierte * Repository-Schnittstelle implementiert   und wenden Sie einen Ratschlag an, der die Kontrolle dem
übergibt   QueryExecuterMethodInterceptor. Query * Erkennungsstrategie kann sein   konfiguriert durch Festlegen von QueryLookupStrategy.Key.

Deshalb denke ich, dass Sie kein generisches Repository direkt erstellen können.

Sie können jedoch versuchen, RepositoryFactorySupport (implementiert JpaRepositoryFactory ) zu verwenden, um Repositories zu generieren und sie manuell in den Kontext zu stellen.

Sie können auch die Anzahl der Dateien in Projekt- und Namensraumverschmutzungen reduzieren, indem Sie Repositorys als innere Schnittstellen definieren: Fügen Sie einfach ein Attribut hinzu, wie unten gezeigt:

%Vor%     
retroq 30.11.2014 16:13
quelle