Ich erhalte folgenden Fehler, wenn ich das Objekt mit Hibernate speichere
object references an unsaved transient instance - save the transient instance before flushing
Ich erhalte folgenden Fehler, wenn ich das Objekt mit Hibernate speichere
object references an unsaved transient instance - save the transient instance before flushing
Ein einfacher Weg, dieses Problem zu lösen, ist das Speichern beider Entitäten. Speichern Sie zuerst die untergeordnete Entität und dann die übergeordnete Entität. Denn die übergeordnete Entität ist für den Fremdschlüsselwert von der untergeordneten Entität abhängig.
Nachfolgend eine einfache Prüfung der Eins-zu-eins-Beziehung
insert into Department (name, numOfemp, Depno) values (?, ?, ?)
Hibernate: insert into Employee (SSN, dep_Depno, firstName, lastName, middleName, empno) values (?, ?, ?, ?, ?, ?)
Session session=sf.openSession();
session.beginTransaction();
session.save(dep);
session.save(emp);
In meinem Fall wurde durch die Verwendung von Cascade.ALL ein unnötiger Eintrag in die Tabelle eingefügt, die bereits dasselbe Objekt enthielt (das Erzeugen eines untergeordneten Werts ohne eine ID bewirkt genau das). Ich müsste also zunächst ein untergeordnetes Objekt aus dem Repository abrufen und es in das Hauptobjekt einfügen, anstatt das Objekt, das das Problem verursacht.
Student s = studentRepo.findByName(generatedObject.getStudent().getName())
generatedObject.student(s);
Mein Problem bezog sich auf @BeforeEach
von JUnit. Und selbst wenn ich die zugehörigen Entitäten gespeichert habe (in meinem Fall @ManyToOne
), erhielt ich die gleiche Fehlermeldung.
Das Problem hängt irgendwie mit der Sequenz zusammen, die ich in meinem Elternteil habe. Wenn ich den Wert diesem Attribut zuweise, ist das Problem gelöst.
Bsp. Wenn ich die Entität Frage habe, die einige Kategorien haben kann (eine oder mehrere) und die Entität Frage eine Sequenz hat:
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "feedbackSeq")
@Id
private Long id;
Ich muss den Wert zuweisen question.setId(1L);
Ich sah mich mit dieser Ausnahme konfrontiert, als ich das übergeordnete Objekt nicht persistierte, sondern das untergeordnete Objekt speicherte. Um das Problem zu lösen, habe ich in derselben Sitzung sowohl das untergeordnete als auch das übergeordnete Objekt beibehalten und CascadeType.ALL für das übergeordnete Objekt verwendet.
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.