Heim >Java >javaLernprogramm >Wie behebe ich die PersistentObjectException von Hibernate mit getrennten Entitäten?

Wie behebe ich die PersistentObjectException von Hibernate mit getrennten Entitäten?

Linda Hamilton
Linda HamiltonOriginal
2024-12-30 14:39:10538Durchsuche

How to Fix Hibernate's PersistentObjectException with Detached Entities?

PersistentObjectException im Ruhezustand mit getrennten Entitäten korrigieren

Beim Umgang mit JPA-persistenten Objektmodellen können bestimmte Vorgänge zur PersistentObjectException führen , insbesondere beim Beziehungsmanagement. Im Fall einer Viele-zu-Eins-Beziehung zwischen einem Konto und mehreren Transaktionen kann beispielsweise ein Versuch, eine Transaktion mit einem bereits persistenten Konto beizubehalten, diese Ausnahme auslösen.

Es ist entscheidend, das zugrunde liegende Problem zu verstehen. Wenn Sie eine Transaktion erstellen und ein vorhandenes Konto angeben, gilt das Konto als vom Entitätsmanager getrennt. Dies liegt daran, dass Sie das Konto aus einem anderen Kontext abrufen als dem, in dem die Transaktion beibehalten wird.

Um dieses Problem zu beheben, passen Sie den Kaskadentyp in der Annotation der Transaktion auf CascadeType.MERGE. Dadurch wird sichergestellt, dass bei der Beibehaltung der Transaktion das zugehörige Konto in den aktuellen Entity-Manager-Kontext zusammengeführt wird, wodurch das Trennungsproblem gelöst wird.

Hier ist ein aktualisierter Codeausschnitt:

@Entity
public class Transaction {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @ManyToOne(cascade = {CascadeType.MERGE}, fetch = FetchType.EAGER)
    private Account fromAccount;
}
Durch die Implementierung Durch diese Änderungen können Sie Transaktionen mit bereits persistierten Konten erfolgreich persistieren und so die PersistentObjectException beseitigen.

Das obige ist der detaillierte Inhalt vonWie behebe ich die PersistentObjectException von Hibernate mit getrennten Entitäten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn