Goosefraba
Mitglied
Hallo!
Ich arbeite derzeit an einem JSF-Kalender und versuche dort die Funktion des "User anlegen" zu modifizieren.
Beim persistieren und flushen des neuen UserObjektes versuche ich noch eine Referenz mitzuspeichern, allerdings kommst ständig die Exception:
Nach ein paar Stunden rumgequäle und rumprobieren, richte ich mich nun in der Hoffnung auf Hilfe an Euch
Hier der Code:
Das Object companycalender existiert bereits in der DB und über sysout erhalte ich auch die korrekten Werte, also das Objekt existiert.
Ich arbeite derzeit an einem JSF-Kalender und versuche dort die Funktion des "User anlegen" zu modifizieren.
Beim persistieren und flushen des neuen UserObjektes versuche ich noch eine Referenz mitzuspeichern, allerdings kommst ständig die Exception:
Code:
Exception Description: Cannot persist detached object [at.irian.medicalscheduler.orm.CompanyCalendar@1fddb33].
Class> at.irian.medicalscheduler.orm.CompanyCalendar Primary Key> [1]
at com.sun.facelets.el.LegacyMethodBinding.invoke(LegacyMethodBinding.java:73)
at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:61)
... 25 more
Caused by: javax.persistence.EntityExistsException:
Exception Description: Cannot persist detached object [at.irian.medicalscheduler.orm.CompanyCalendar@1fddb33].
Class> at.irian.medicalscheduler.orm.CompanyCalendar Primary Key> [1]
at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.persist(EntityManagerImpl.java:193)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
...
Nach ein paar Stunden rumgequäle und rumprobieren, richte ich mich nun in der Hoffnung auf Hilfe an Euch

Hier der Code:
Code:
if(!getEm().contains(user) && user.getUid() == null)
getEm().persist(user);
//we flush here because the user already exists
//since we apply conversations here no merge is needed anymore
CompanyCalendar cal = this.companycalendar;
cal.getUsers().add(user);
user.setCompanycalendar(cal);
getEm().flush();
Das Object companycalender existiert bereits in der DB und über sysout erhalte ich auch die korrekten Werte, also das Objekt existiert.