Ich habe diese Frage oft gestellt und ich weiß, warum es passiert, ich habe nur Probleme, die versuchen, es in meinem speziellen Fall zu lösen."konnte eine Sammlung von Rollen nicht träge initialisieren" in Hibernate
Ich konvertiere das Projekt, an dem ich arbeite, mithilfe von XML-Dateien, um Klassen für Hibernate-Datenbanktabellen zuzuordnen und Hibernate-Annotationen zu verwenden. Alles läuft gut, solange ich grundlegende Java-Typen (Primitive oder Klassenversionen von Primitiven, zum Beispiel int oder Integer) verwende. Aber wenn es darum geht, dass meine Klasse ein Mitglied hat, das eine andere Klasse von mir ist, gehen die Dinge nach Süden.
Eine Art von Problem ist, wenn ich OnetoMany Beziehung habe.
In der XML-Datei für foo sagt es so:
<set inverse="true" name="barList">
<key>
<column name="foo_id"/>
</key>
<one-to-many class="com.me.model.dao.Bar" />
</set>
In dieser zu einer Anmerkung Umwandlung, habe ich am Ende mit auf den Punkt:
@OneToMany
@JoinTable(name = "bar", inverseJoinColumns = @JoinColumn(name = "foo_id"))
public Set<Bar> getBarList() {
return barList;
}
ich andere Variationen dieser versucht haben (einschließlich habe eine JoinColumn), und ich weiß, wie es steht, kann es unvollständig sein, aber wie ich schon sagte, habe ich Probleme, eine richtige Lösung zu finden, um die faule ursprüngliche Ausnahme loszuwerden, wenn ich mit den Objekten in der Ansicht arbeite von meinem MVC. FetchType.EAGER soll ein Workaround und keine Lösung sein, aber kurioserweise werden keine Lösungen angeboten. Vielleicht werden mehr Informationen benötigt.
- Mein MVC ist Wicket 1.4.17.
- Meine App-Server ist Widlfly (dh keine web.xml)
- Java-Version ist 8.
- Hibernate, durch Maven POM
- Artefakt:
- Version Hibernate: 3.5.0.ga
- Artefakt: ejb3-Persistenz
- Version: 1.0.1.GA
Edit: Es kann hilfreich sein hinzuzufügen, dass, während barList in der foo-Klasse erscheint, es keine Referenz irgendeiner Art auf bar in foo in der Datenbank gibt. Die foo-Tabelle hat eine bar_id.
Angenommen, Sie möchten Bidirektional eins zu viele und viele zu eins tun ?! Können wir nur Annotationen nur dafür verwenden ?! –
Sie sind bereits in der XML-Datei bidirektional zugeordnet, aber ich versuche, eine Klasse nach der anderen in Anmerkungen umzuwandeln. Viele dieser Klassen sind sehr kompliziert in Bezug auf ihre Beziehungen zwischen komplexen Objekten. Daher versuche ich Schritt für Schritt, Fehler leichter zu verfolgen und zu beheben. Temporäre gemischte XML/Annotationen scheinen im Moment für einfachere Beziehungen in Ordnung zu sein - wird es für bidirektionales Mapping in Ordnung sein, bis ich die eine Klasse funktioniere und mit der Konvertierung der anderen beginnen kann? – sorinev
Sie müssen etwas über Ihre Session/Transaktionsverarbeitung posten. Vielleicht ist das Problem, dass die Sitzung, die das Lazy Loading durchführt, verschwunden ist, sobald Sie die Entity aus Ihrem Repository erhalten. (Hatte dieses Problem mit spring-webflow, vergessen Sie den -Tag) –
Turo