Cannot persist detached object
J'ai deux classes
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
@SuppressWarnings( { "unused", "serial" })
@Entity
@Table(name = "Occupation")
public class Occupation implements Serializable{
@OneToOne(cascade = CascadeType.ALL, fetch=FetchType.LAZY)
@JoinColumn(name="LOGIN", unique = true,nullable = true)
private Login login;
---
public Login getLogin() {
return login;
}
public void setLogin(Login login) {
this.login = login;
}
}
@SuppressWarnings( { "unused", "serial" })
@Entity
@Table(name = "Login")
public class Login implements Serializable{
@OneToOne(mappedBy = "login", fetch=FetchType.LAZY)
private Occupation occupation;
---
public Occupation getOccupation() {
return occupation;
}
public void setOccupation(Occupation occupation) {
this.occupation = occupation;
}
} |
L'exécution
Code:
1 2 3 4 5 6 7 8
|
Occupation o1 = new Occupation(new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2009"),new SimpleDateFormat("dd/MM/yyyy").parse("30/06/2009"));
//Occupation o1 = new Occupation();
o1.setLogin(l1);
Occupation o2 = new Occupation(new SimpleDateFormat("dd/MM/yyyy").parse("01/07/2009"),new SimpleDateFormat("dd/MM/yyyy").parse("31/12/2009"));
//Occupation o2 = new Occupation();
o2.setLogin(l2);
service.saveOccupations(new Occupation[] { o1, o2}); |
et j'ai l'erreur suivante:
Citation:
log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
[TopLink Info]: 2009.02.05 08:59:13.046--ServerSession(29751107)--TopLink, version: Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))
[TopLink Info]: 2009.02.05 08:59:13.421--ServerSession(29751107)--file:/C:/Netbeans/workspace/NetBeansProjects/HibernateTest/src/-jpa login successful
Exception in thread "main" javax.persistence.EntityExistsException:
Exception Description: Cannot persist detached object [P[1,jpa,jpa]].
Class> mis.cinq.entites.Login Primary Key> [jpa]
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(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:198)
at $Proxy16.persist(Unknown Source)
at mis.cinq.dao.Dao.saveOccupation(Dao.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy19.saveOccupation(Unknown Source)
at mis.cinq.service.Service.saveOccupations(Service.java:257)
at mis.cinq.view.InitDB.fill(InitDB.java:97)
at mis.cinq.view.InitDB.main(InitDB.java:36)
Caused by: Exception [TOPLINK-7231] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.ValidationException
Exception Description: Cannot persist detached object [P[1,jpa,jpa]].
Class> mis.cinq.entites.Login Primary Key> [jpa]
at oracle.toplink.essentials.exceptions.ValidationException.cannotPersistExistingObject(ValidationException.java:2156)
at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.registerNotRegisteredNewObjectForPersist(UnitOfWorkImpl.java:3237)
at oracle.toplink.essentials.internal.ejb.cmp3.base.RepeatableWriteUnitOfWork.registerNotRegisteredNewObjectForPersist(RepeatableWriteUnitOfWork.java:323)
at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:3206)
at oracle.toplink.essentials.mappings.ObjectReferenceMapping.cascadeRegisterNewIfRequired(ObjectReferenceMapping.java:655)
at oracle.toplink.essentials.internal.descriptors.ObjectBuilder.cascadeRegisterNewForCreate(ObjectBuilder.java:1256)
at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:3212)
at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.persist(EntityManagerImpl.java:190)
... 21 more
Java Result: 1
BUILD SUCCESSFUL (total time: 3 seconds)