J'ai deux classes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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:
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)