hibernate-Eigenschaft Formel, wie man mehr als 1 Zeile?
In der hibernate-mapping-Datei, die ich über die Eigenschaft Formel um einen Wert hat.
<property name="price" type="double" formula="(select SUM(amount) ...) />
Aber es erlaubt, um nur 1 Zeile. Wie bekomme ich lisf der Zeilen?
Ich verstehe, dass "Eigentum" ist nicht geeignet, aber es ist unmöglich, Formeln zu setzen oder Liste.
Natürlich ich will einfach nur, um Werte ohne hinzufügen neuer Klassen.
Ich habe nur die sql-Anfrage, und erwarten zu bekommen, Liste oder set für bestanden Klasse.
- Klingt wie Sie wirklich wollen, um ein 1:m-Referenz, ohne "richtigen" Feld "Referenz". Ist das richtig?
- Gut, ich muss hinzufügen, eine Liste zu meiner Klasse. Es wird verwendet, NUR um zu zeigen, zusätzliche Informationen über dieses Objekt. Und diese Tische sind nicht gedeckt, mit mapping-Datei, 'Ursache, Sie sind von einer anderen Anwendung verwendet.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Ihr Formel gibt mehr als eine Zeile, müssen Sie die Verknüpfung der Anweisung mit der entity identifier, zum Beispiel:
wählen Sie Spalte name
von Tabelle
wo Tabelle.id = entity_identifier
Betreffend, wenden Sie diese, um eine Reihe von Werten, die vielleicht in einer group by-Funktion anwenden können. Ich habe einmal verwendet, group_concat von mysql zum Beispiel um eine Liste von Werten. Das schlimme ist, dass die Formel war gekoppelt an mysql-native-Dialekt, aber es hat geklappt.
Formel Eigenschaften sich nur auf die aktuelle Zeile. Wenn Sie ausführen möchten, Aggregat-Funktionen, die Sie benötigen, zu schreiben, die einer bestimmten Abfrage, um Sie zu Holen. Finden Sie die Abschnitt aus der hibernate-docs, die mit Aggregat-Funktionen.
Formeln gelten für einwertige Eigenschaften nur, nicht zu Sammlungen. Sie können jedoch, geben Sie eine benutzerdefinierte SQL-Anweisung verwendet werden, die beim laden einer Sammlung.
Der schwierige Teil hierbei ist, dass aus Ihrer Frage, es klingt wie das, was Sie wollen, ist eine Sammlung von Elementen (
double
Preis) eher als Personen; ich habe nie versucht,, um anzugeben, custom loaderfür so etwas und so bin mir nicht sicher, ob es funktionieren wird. Dokumentation ist eher still bei dem Thema.
Wenn die oben nicht funktioniert, ist eine weitere option, um zu definieren, Ihre
SELECT
als Sicht-und Kartensammlung, die Art und Weise (wieder, als Sammlung von Elementen).Schließlich können Sie auch eine Abfrage ausführen, wie
skaffman
vorgeschlagen. Sie benötigen für den Aufruf der Abfrage und füllen Sie eine Auflistung auf Ihre Person manuell beim entsprechenden (z.B. in der DAO nach Entität geladen wird) ro können Sie definieren Sie einen entsprechenden listener und tun Sie es.