___ qstntxt ___
Das ist mein Code Hier verwende ich mehrere Listen, um Daten aus der Datenbank zu holen.
Beim Abrufen von Daten aus der hql-Abfrage wird eine Ausnahme angezeigt.
Pojo-Klasse
%Vor%
hmb.xml-Datei
%Vor%
Hql-Abfrage
%Vor%
Ich versuche folgende Abfrage, um Daten aus der Datenbank abzurufen, aber dies wird angezeigt
%Code%
Wie man das löst
___ answer31503313 ___
Bei mir hatte ich den gleichen Fehler und löste das durch Hinzufügen der Annotation von Hibernate
@Fetch
%Vor%
___ answer24675918 ___
Sie können nur nach einer Relation für eine Entität eine Verknüpfung erstellen (entweder %code% oder %code% ).
Ziehen Sie die Verwendung von faulen Verknüpfungen und das Laden von Auflistungen in Betracht, wenn sie benötigt werden ODER verwenden Sie faule Verknüpfungen und das manuelle Laden von Sammlungen mit %code% . Zumindest war das die Schlussfolgerung, zu der ich kam, als ich ein ähnliches Problem hatte.
.
In jedem Fall wird mehr als eine Abfrage zur Datenbank benötigt.
___ qstnhdr ___ org.hibernate.loader.MultipleBagFetchException: kann nicht mehrere Taschen gleichzeitig abrufen
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen.
___ tag123hibernate ___ Hibernate ist eine ORM-Bibliothek (Object-Relational Mapping) für die Sprache Java, die es Entwicklern ermöglicht, POJO-artige Domänenmodelle in ihren Anwendungen zu verwenden, die weit über das Object / Relational Mapping hinausgehen.
___ answer24675463 ___
Ihre Anfrage holt zu viele Daten und HIbernate kann nicht alle laden.
Reduzieren Sie Ihre Anfrage und / oder konfigurieren Sie Ihre Entitäten, um nur benötigte Daten abzurufen
___ tag123jpa ___ Die Java Persistence API (JPA) ist eine Java-Spezifikation für den Zugriff, die Speicherung und die Verwaltung von Daten zwischen Java-Objekten / Klassen und einer relationalen Datenbank. Es ist Teil der EJB 3.0-Spezifikation und der Industriestandard für ORM (Object to Relational Mapping).
___ answer26393134 ___
Der Wechsel zu %code% ist die beste Lösung. Wenn Sie jedoch die %code% nicht durch %code% ersetzen können (wie in meinem Fall gab es eine starke Verwendung von JSF-Tags, die für %code% spezifisch sind) und wenn Sie proprietäre Hibernate-Annotationen verwenden können, können Sie% co_de angeben %. Diese Lösung funktionierte besser für mich, die Umstellung auf %code% würde Tonnen von Refactoring erfordern.
Also, Ihr Code wäre etwa so:
%Vor%
Wie Igor in den Kommentaren vorgeschlagen hat, könnten Sie auch Proxy-Methoden erstellen, um die Listen zurückzugeben. Ich habe das nicht ausprobiert, wäre aber eine gute Alternative, wenn Sie keine Hibernate-proprietären Annotationen verwenden können.
___ tag123bag ___ Eine ungeordnete Sammlung, die Duplikate enthalten kann
___ tag123hibernateemapping ___ Hibernate verwendet Mapping-Metadaten, um herauszufinden, wie Objekte der persistenten Klasse geladen und gespeichert werden. Die Hibernate-Zuordnung kann mithilfe von Konfigurationsdateien oder Anmerkungen festgelegt werden.
___ answer24676806 ___
Wie in dieser Artikel , Hibernate erlaubt es nicht mehr als eine Tasche holen denn das würde ein cartesianischen Produkt erzeugen.
Sie können die Taschen-Sets, ändern und ein %code% Attribut ‚Simulieren‘ eine geordnete Liste Verhalten hinzufügen:
%Vor%
Aber nur weil du es kannst, heißt das nicht, dass du es solltest.
Was könnten Sie tun, ist höchstens eine Sammlung in der ursprünglichen SQL-Abfrage zu holen, während die anderen Sammlungen später mit sekundären Abfragen abgerufen werden. Auf diese Weise können Sie das kartesische Produkt vermeiden.
Eine weitere Option ist Multi-Level zu verwenden, von Kind zu holen bis zu Muttergesellschaften .
___