2017-02-10 3 views
1

Die Entität "Home" wird also zusammen mit der Entität "Person" beibehalten, die zusammen mit der Entität "Family" beibehalten wird. Auch die FamilyDetails-Entität wird zusammen mit der Familienentität beibehalten. Ich habe versucht, das Home-Attribut von FamilyDetails zu aktualisieren, bevor die Family-Entität beibehalten wurde. Das Problem ist, dass die hinzugefügten Häuser noch nicht erhalten sind, wenn ich sie in die Sammlung hinzufüge. Ich glaubte, dass, wenn sie würden zusammen mit Personen Einheiten von Familie beibehalten werden würden sie auch von FamilyDetails in Häusern Sammlung aktualisiert werden, aber ich erhalte eineHibernate TransientObjectException beim Verweisen auf vorübergehende Entitäten

org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.TransientObjectException: Objekt verweist auf ein nicht gespeicherter vorübergehende Instanz - speichern Sie die vorübergehende Instanz vor dem Löschen: com.model.impl.Home;

Gibt es eine Möglichkeit, das zu vermeiden?

+0

Versuchen Sie Kaskade zur Home-Entität in FamilyDetails '@ManyToMany (fetch = FetchType.LAZY, targetEntity = Home.class, cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE)' – grizzly

Antwort

0

Nun offensichtlich: Speichern Sie die Home s, bevor Sie den FamilyDetail s speichern, die durch Zugabe einer @ManyToMany Annotation mit einem cascade Attribute erreicht werden kann, wie Grizzly in seinem Kommentar zur Kenntnis genommen.

Denken Sie darüber nach: Kein kaskadierendes Verhalten zu konfigurieren, ist so, als würde man sagen: Ich kümmere mich darum, diese zu behalten. Warum sollte JPA darauf achten, dass diese beibehalten und in der richtigen Reihenfolge beibehalten werden, nur weil dies an einer anderen Stelle relativ zu einer anderen Entität konfiguriert ist.

Verwandte Themen