Gibt es eine Möglichkeit, die von Spring Data Rest ausgeführte findAll-Abfrage zu überschreiben?@NamedQuery überschreiben findAll im Frühjahr Datenrest JpaRepository
Ich brauche eine Möglichkeit, die Ergebnisse auf der Grundlage bestimmter Kriterien zu filtern, und es scheint, dass die Verwendung einer @NamedQuery
sollte in der Linie von dem, was ich suche, so dass ich einen Test einrichten.
@Entity
@Table(name = "users")
@NamedQueries({
@NamedQuery(name = "User.findAll", query="SELECT u FROM User u WHERE u.username = 'test'"),
@NamedQuery(name = "User.findNameEqualsTest", query="SELECT u FROM User u WHERE u.username = 'test'")
})
public class User implements Serializable, Identifiable<Long> { }
In diesem Ort würde ich SDR erwartet, dass mein findAll() Abfrage (Rückkehr 1 Ergebnis) verwenden, sondern führt es die gleiche alte findAll Logik (alle Ergebnisse zurückkehrt).
In meinem Repository ich hinzugefügt:
@Repository
@RestResource(path = "users", rel = "users")
public interface UserJpaRepository extends JpaRepository<User, Long> {
public Page<User> findNameEqualsTest(Pageable pageable);
}
und in diesem Fall gilt für den Umfang vorgesehen @NamedQuery
abholen. So ...
Wie sollte ich die Standardlogik findAll()
übergehen? Ich muss tatsächlich einen komplexen Satz von Kriterien konstruieren und auf die Ergebnismenge anwenden.
Implementiert und es funktioniert. Hämmerte meinen Kopf ein wenig gegen die Tastatur, bis ich die Bedeutung von Klassennamen in diesem Prozess erkannte. –
In der Tat, es ist ein sehr häufiges Problem, mehrmals in SOverflow gefragt, Tutorial sollte eine Notiz enthalten – Koitoer
Ab Frühjahr Data JPA 1.5 wird die benutzerdefinierte Implementierung nicht mehr notwendig sein, um dies zu erreichen. Einzelheiten finden Sie unter [meine Antwort] (http://stackoverflow.com/a/21751130/18122). –