Heim >Java >javaLernprogramm >Wie kann der Hibernate-Fehler „Objekt verweist auf eine nicht gespeicherte transiente Instanz' behoben werden?
Fehler: Hibernate „Objekt verweist auf eine nicht gespeicherte transiente Instanz – Speichern Sie die transiente Instanz vor dem Leeren“
Beim Versuch, ein Objekt mit zu speichern Im Ruhezustand kann Folgendes auftreten Fehler:
object references an unsaved transient instance - save the transient instance before flushing
Verstehen des Problems:
Dieser Fehler bedeutet, dass Hibernate eine Situation erkannt hat, in der ein Objekt eine Sammlung nicht gespeicherter vorübergehender Instanzen enthält, bei denen es sich um Entitäten handelt die noch nicht in der Datenbank gespeichert wurden. Wenn Sie versuchen, eine Entität mit einer nicht gespeicherten Sammlung zu speichern, geht Hibernate davon aus, dass Sie die vorübergehenden Instanzen in dieser Sammlung bereits gespeichert haben.
Lösung:
Um diesen Fehler zu beheben , müssen Sie Hibernate anweisen, die transienten Instanzen beim Speichern ihrer übergeordneten Entität zu kaskadieren (speichern). Dies kann durch Hinzufügen des Attributs cascade="all" im XML-Mapping oder der Annotation cascade=CascadeType.ALL im Fall von Annotationen erreicht werden.
Beispiel in XML:
<class name="com.entity.Parent"> <collection name="children" cascade="all"> <many-to-one name="child" /> </collection> </class>
Beispiel in Anmerkungen:
@Entity public class Parent { @OneToMany(cascade = CascadeType.ALL) private List<Child> children; }
Durch die Angabe von cascade="all" oder cascade=CascadeType.ALL teilen Sie Hibernate mit, dass beim Speichern einer übergeordneten Entität automatisch auch alle untergeordneten Entitäten gespeichert werden sollen. auch wenn sie zuvor nicht in der Datenbank gespeichert wurden. Dadurch wird sichergestellt, dass alle Objekte in der Beziehung ordnungsgemäß beibehalten werden.
Durch die Implementierung dieses Fixes können Sie Objekte erfolgreich mit Sammlungen nicht gespeicherter transienter Instanzen speichern und die Meldung „Objekt verweist auf eine nicht gespeicherte transiente Instanz – speichern Sie die transiente Instanz vorher“ vermeiden Fehler beim Spülen im Ruhezustand.
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!