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
DDDOriginal
2024-12-13 07:20:14202Durchsuche

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>

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

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

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!

Stellungnahme:
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