Ich habe 2 Entitäten: Account
und AccountRole
.
.
%Vor% Problem tritt auf, wenn ich die accountRole aus der Datenbank nehme und versuche, mein Account
zu erhalten. An diesem Punkt habe ich gerade mein Konto erstellt und die Rolle existiert bereits in db.
Ich habe das gelesen: JPA / Hibernate: losgelöste Entität wurde an persist übergeben Und was ich verstanden habe, muss ich die Entitäten Werte aus beiden Richtungen, so dass was ich in meinem Setter tun.
Immer noch Fehler.
%Vor% Es sieht so aus, als ob Sie die Transaktion während Ihrer Verarbeitung verlassen, so dass accountRole
losgelöst wird oder aus anderen Gründen bereits entfernt wurde.
Ein Aufruf von entityManager.merge(accountRole)
vor dem Aufruf von entityManager.persist(account)
sollte das Problem beheben.
BEARBEITEN: Wenn Sie nicht sicher sein können, ob das accountRole
bereits in der DB existiert, müssen Sie es leider durch Abfragen überprüfen. Wenn es existiert - Zusammenführung, wenn nicht - persistieren. Es ist in der Tat ein Aufwand, aber ich habe noch keine bessere Problemumgehung gesehen.
EDIT2: Die Entität, die Sie an die merge
-Methode übergeben, bleibt losgelöst - die verwaltete Entität wird von merge
zurückgegeben. Sie müssten also zuerst zusammenführen und dann die Referenz für account
auf die Rückgabewert von merge
.
Tags und Links java jpa hibernate entitymanager