Meine Java-Bean hat eine childCount-Eigenschaft. Diese Eigenschaft ist keiner Datenbankspalte zugeordnet . Stattdessen sollte es von der Datenbank mit einer COUNT()
Funktion berechnet werden, die für den Join meiner Java-Bean und ihrer untergeordneten Elemente ausgeführt wird. Es wäre sogar noch besser, wenn diese Eigenschaft auf Anfrage / "träge" berechnet werden könnte, aber dies ist nicht obligatorisch.
Im schlimmsten Fall kann ich die Eigenschaft dieser Bean mit HQL oder der Criteria-API festlegen, aber ich würde es vorziehen, dies nicht zu tun.
Die @Formula
Annotation zum Ruhezustand mag helfen, aber ich konnte kaum Dokumentation finden.
Jede Hilfe sehr geschätzt. Vielen Dank.
@Formula
Annotation verwendet SQL, nicht HQL.Wie in diesem Artikel erläutert , haben Sie drei Möglichkeiten:
@Transient
Methode@PostLoad
Entity Listener verwenden@Formula
Annotation für den Ruhezustand verwendenWährend Sie im Ruhezustand die Verwendung von @Formula mit JPA ermöglichen, können Sie mit dem @ PostLoad- Rückruf eine vorübergehende Eigenschaft mit dem Ergebnis einiger Berechnungen füllen :
Für komplexere Abfragen können Sie den Ruhezustand verwenden
@Formula
, wie in diesem Artikel erläutert :quelle
Schauen Sie sich Blaze-Persistence Entity Views an, die auf JPA aufbauen und erstklassige DTO-Unterstützung bieten. Sie können alles auf Attribute in Entitätsansichten projizieren und vorhandene Verknüpfungsknoten werden nach Möglichkeit sogar für Zuordnungen wiederverwendet.
Hier ist ein Beispiel für eine Zuordnung
Wenn Sie dies abrufen, wird eine ähnliche JPQL / HQL-Abfrage generiert
Hier ist ein Blog-Beitrag über benutzerdefinierte Unterabfrageanbieter, der auch für Sie interessant sein könnte: https://blazebit.com/blog/2017/entity-view-mapping-subqueries.html
quelle
Ich habe dies auf meinem Code versucht
Die Fehler, die ich beim Ausführen und Anzeigen meiner Ansicht bekomme, noch bevor ich versuche, die Spalte auf dem Schnurrbart anzuzeigen, sind ungefähr so
Die Frage, die ich gestellt habe, war, ob es eine Möglichkeit gibt, Werte der berechneten Spalte mithilfe von JPA / Hibernate mit mySQL abzurufen.
Was mache ich falsch ?
quelle