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!