Ich lerne, wie extend
Spring CrudRepository
Schnittstelle zum Erstellen eines Repository für eine Entität. Aber ich habe Probleme, kompliziertere Abfragen zu implementieren, die Werte verwenden, die nicht fest codiert sind. Hier ist ein künstliches Beispiel. Die HQL ist nicht gültig, aber es zeigt, was ich versuche zu tun:Verwenden von Bezeichnern und Werten von anderen Orten in einem Spring CrudRepository
import mypackage.DogTypeEnum;
public interface myRepository extends CrudRepository<Dog, Integer> {
int oldAge = 10; // years - old for a dog
@Query(SELECT dog From Dog dog WHERE dog.age > oldAge and dog.type = DogTypeEnum.poodle
public List<Dog> findOldPoodles()
}
So im obigen Beispiel, ich versuche, für alle Hunde vom Typ Pudel abzufragen, die über eine bestimmte Altersgrenze sind. Ich möchte weder poodle
noch den Wert 10
fest codieren, weil diese Werte auch an anderer Stelle im Code verwendet werden und ich Doppelungen vermeiden möchte. Ich möchte nicht, dass der Benutzer diese Werte auch als Parameter übergibt.
Gibt es eine Möglichkeit, dies zu tun?
, was Sie von Ihnen gemeint Sie nicht wollen, um den Benutzer zu codieren und wollen nicht die Werte als Parameter zu übergeben? Wie und wo werden Sie von diesen Werten erwartet? – pvpkiran
Ich meinte zum Beispiel, dass ich '... WHERE dog.age> oldAge ...' anstelle von '... WHERE dog.age> 10 ...' möchte, weil 'oldAge' eine Variable ist, die woanders deklariert ist (In diesem Fall wird es in der Schnittstelle deklariert, im Fall von 'DogTypeEnum' wurde es importiert), so dass die Logik nicht dupliziert wird. –