Angenommen, ich habe eine Entität namens Product
. Ich entwerfe ein Repo alsHinzufügen von benutzerdefinierten Methode zu JPAR Repository mit Generics
@Repository
interface ProductRepository implements JPARepository<Product, Integer>{}
Diese alle Standardmethoden erben würde wie save, findAll
etc;
Jetzt möchte ich eine benutzerdefinierte Methode, die auch eine gemeinsame Methode für andere Entitäten ist. Ich habe eine andere Schnittstelle und Implementierung
interface CustomRepository<T,ID>{ public void customMethod() }
class CustomRepositoryImpl implements CustomRepository<T,ID>{ public void customMethod(){} }
Und ich schreiben die ProductRepository als
@Repository
interface ProductRepository implements
JPARepository<Product, Integer>,
CustomRepository<Product, Integer>
{}
Nun, das mir keine Übersetzungsfehler nicht geben. Aber zur Laufzeit bekomme ich diesen Fehler:
No property 'customMethod' is found for Product
Was fehlt mir?
Danke für den Code-Link. Für was ist die Klasse 'Model'? Was ist die Definition der Klasse? Außerdem sollte ProductrepositoryImpl das ProductRepository implementieren, ansonsten wird spring keine Instanz erstellen. – madhairsilence
Der gesamte Code ist im Beispiel enthalten.Führen Sie Integrationstests als 'mvn test' durch. – manish
Ok. Model @MappedSuperClass ist neu hier. Aber wieder. Ich konnte sehen, dass customMethod in ProductRepositoryImpl implementiert wird. Dies würde es nur für das Produkt verfügbar machen. Wenn ich eine neue Entität namens Service habe. Ich müsste wieder denselben Code "Dito" schreiben. Wie verschiebe ich die Implementierung in die generische Klasse – madhairsilence