911 Stimmen

Behebung des Hibernate-Fehlers "Objekt verweist auf eine nicht gespeicherte transiente Instanz - speichern Sie die transiente Instanz vor dem Flushen".

Ich erhalte folgenden Fehler, wenn ich das Objekt mit Hibernate speichere

object references an unsaved transient instance - save the transient instance before flushing

4voto

Dulith De Costa Punkte 9549

Ich war auch in der gleichen Situation. Durch die Einstellung folgende Anmerkung über die Eigenschaft machte es lösen die Ausnahme aufgefordert.

Die Ausnahme, mit der ich konfrontiert war.

Exception in thread "main" java.lang.IllegalStateException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.model.Car_OneToMany

Um dies zu überwinden, habe ich die Anmerkung verwendet.

    @OneToMany(cascade = {CascadeType.ALL})
    @Column(name = "ListOfCarsDrivenByDriver")
    private List<Car_OneToMany> listOfCarsBeingDriven = new ArrayList<Car_OneToMany>();

Warum hat Hibernate die Ausnahme ausgelöst?

Diese Ausnahme wird in Ihrer Konsole ausgelöst, weil das untergeordnete Objekt, das ich dem übergeordneten Objekt zuordne, zu diesem Zeitpunkt nicht in der Datenbank vorhanden ist.

Durch die Bereitstellung @OneToMany(cascade = {CascadeType.ALL}) wird Hibernate angewiesen, sie in der Datenbank zu speichern, während das übergeordnete Objekt gespeichert wird.

3voto

Ralf Punkte 41

Der Vollständigkeit halber: A

org.hibernate.TransientPropertyValueException 

mit Nachricht

object references an unsaved transient instance - save the transient instance before flushing

tritt auch auf, wenn Sie versuchen, eine Entität mit einem Verweis auf eine andere Entität, die zufällig freistehend .

3voto

acpuma Punkte 429

Ich erhalte diesen Fehler, wenn ich

getSession().save(object)

aber es funktioniert ohne Probleme, wenn ich die

getSession().saveOrUpdate(object)

2voto

Ich denke, das liegt daran, dass Sie versucht haben, ein Objekt zu persistieren, das einen Verweis auf ein anderes Objekt hat, das noch nicht persistiert ist, und so versucht es auf der "DB-Seite", einen Verweis auf eine Zeile zu setzen, die nicht existiert

2voto

Abeed Ali Punkte 51

Nach der Einführung des optimistischen Sperrens (@Version) trat bei allen PUT-HTTP-Transaktionen derselbe Fehler auf

Zum Zeitpunkt der Aktualisierung einer Entität ist es zwingend erforderlich, id und Version dieser Entität zu senden. Wenn eines der Entitätsfelder mit anderen Entitäten in Verbindung steht, dann sollten wir für dieses Feld auch id- und Versionswerte bereitstellen, da die JPA sonst versucht, diese verbundene Entität zunächst als neue Entität zu erhalten.

Beispiel : wir haben zwei Entitäten --> Fahrzeug (id,Auto,Version) ; Auto (id, version, brand); um die Fahrzeug-Entität zu aktualisieren/bestehen zu lassen, stellen Sie sicher, dass das Feld Car in der Fahrzeug-Entität die Felder id und version enthält

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X