Spring Data JPA Abrufen

8

Gibt es eine Möglichkeit, eine Spring-Datenspezifikation zu definieren (die ein JPA-Prädikat zurückgibt), deren einziger Zweck es ist, einen eifrigen Abruf durchzuführen?

Ich habe eine Entität, die verschiedene Beziehungen mit Lazy Loading definiert, aber es gibt mehrere Abfragen, bei denen ich die gesamte Entitätsrepräsentation einschließlich aller zugehörigen Auflistungen zurückgeben möchte, aber die Kriterien dieser Abfragen können variieren. Ich habe ein paar Posts gesehen (zB auf der Frühjahrsforum ), die die mögliche Einführung von Abrufgruppen diskutieren, was wahrscheinlich die ideale Lösung wäre; da dies jedoch noch nicht Teil der JPA-Spezifikation ist, bietet Spring Data keine Unterstützung dafür.

Ich bin auf der Suche nach einer wiederverwendbaren Methode, um bei einer Vielzahl von dynamischen Abfragen ein dynamisches Abrufen durchzuführen.

Ich habe beispielsweise über die Entwicklung einer wiederverwendbaren Spezifikation nachgedacht, deren einziger Zweck es ist, das eifrige Laden durchzuführen, und die mit anderen Spezifikationen kombiniert werden könnte, z. B .:

%Vor%

Das Ziel dieser Spezifikation besteht darin, sie in verschiedenen Abfragen wiederzuverwenden, z. B .:

%Vor%

Die eager-Abrufspezifikation ist jedoch kein echtes Prädikat, also gibt sie null zurück und würde offensichtliche Probleme verursachen (d. h. NullPointerExceptions ), wenn sie mit anderen Prädikaten verknüpft sind.

(Beachten Sie, dass dieses Prädikat alone wie erwartet funktioniert; d. h. die folgende Abfrage ruft ordnungsgemäß ab: repository.findAll(eager()); ).

Gibt es ein geeignetes Nicht-Null-Prädikat, das aus der "eifrig" -Spezifikation zurückgegeben werden kann, oder gibt es andere wiederverwendbare Ansätze zum Auslösen von Eager-Abrufen mithilfe von Spring Data JPA-Spezifikationen (ohne die Eager-Last einer anderen Spezifikation zuordnen zu müssen)? ?

    
shelley 18.03.2013, 16:42
quelle

1 Antwort

6

Wir haben die Behandlung von null Specification s und Predicate s im Zuge der Fehlerbehebung verbessert DATAJPA- 300 . Vielleicht möchten Sie die 1.4 Snapshots ausprobieren und sehen, wie sich das auf Ihr Szenario auswirkt.

    
Oliver Gierke 19.03.2013, 12:56
quelle