Heim > Java > javaLernprogramm > Wie kann der Hibernate-Fehler „Objekt verweist auf eine nicht gespeicherte transiente Instanz' behoben werden?

Wie kann der Hibernate-Fehler „Objekt verweist auf eine nicht gespeicherte transiente Instanz' behoben werden?

DDD
Freigeben: 2024-12-13 07:20:14
Original
196 Leute haben es durchsucht

How to Fix Hibernate's

Behebung des Hibernate-Fehlers „Objekt verweist auf eine nicht gespeicherte vorübergehende Instanz“

Der Fehler „Objekt verweist auf eine nicht gespeicherte vorübergehende Instanz“ in Hibernate tritt beim Versuch auf um ein Objekt mit nicht gespeicherten zugehörigen Objekten zu speichern, ohne die Kaskadierung ordnungsgemäß anzugeben Operationen.

Ursache:

Dieser Fehler tritt auf, wenn eine Entität über eine Sammlungseigenschaft verfügt, die neue Instanzen enthält, die noch nicht in der Datenbank gespeichert wurden. Hibernate versucht, diese neuen Instanzen automatisch zu speichern, wenn das übergeordnete Objekt beibehalten wird, schlägt jedoch fehl, wenn das Kaskadenattribut nicht richtig festgelegt ist.

Lösung:

Um dieses Problem zu beheben , müssen Sie das Cascade-Attribut in Ihrer Sammlungszuordnung angeben. Dadurch wird Hibernate angewiesen, die zugehörigen Objekte automatisch zu speichern, wenn das übergeordnete Objekt gespeichert wird.

Wenn Sie eine XML-Zuordnung verwenden, fügen Sie Folgendes zu Ihrer Sammlungszuordnung hinzu:

<set name="relatedObjects" inverse="true" cascade="all">
    <key column="parent_id"/>
    <one-to-many class="RelatedObject" column="related_id"/>
</set>
Nach dem Login kopieren

Wenn Sie Anmerkungen verwenden, fügen Sie Folgendes hinzu Folgen Sie Ihrer Sammlungseigenschaft:

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Set<RelatedObject> relatedObjects;
Nach dem Login kopieren

Durch die Angabe von cascade=all weisen Sie Hibernate an, die zugehörigen Objekte zusammen mit dem übergeordneten Objekt in einem einzigen beizubehalten Transaktion. Dadurch wird sichergestellt, dass alle erforderlichen Objekte in der Datenbank gespeichert werden und der Fehler „nicht gespeicherte transiente Instanz“ vermieden wird.

Das obige ist der detaillierte Inhalt vonWie kann der Hibernate-Fehler „Objekt verweist auf eine nicht gespeicherte transiente Instanz' behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage