Franchement après avoir cherché mainte fois, je ne crois pas cette erreur.
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
 
import java.io.Serializable;
import java.util.Date;
import java.text.SimpleDateFormat;
 
//import javax.persistence.Column;
//import javax.persistence.Entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.CascadeType;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Version;
 
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
 
@SuppressWarnings( { "unused", "serial" })
@Entity
@Table(name = "Occupation")
 
public class Occupation implements Serializable{
    @Id
	@Column(nullable = false)
	@GeneratedValue(strategy = GenerationType.AUTO)
	private int id;
 
    @Column(nullable = false)
	@Version
	private int version;
 
    @Column(nullable = false)
	@Temporal(TemporalType.DATE)
	private Date datedeb;
 
    @Column(nullable = false)
	@Temporal(TemporalType.DATE)
	private Date datefin;
 
    @OneToOne(cascade = CascadeType.ALL, fetch=FetchType.LAZY)
    @JoinColumn(name="MATRICULE", unique = true,nullable = true)
    private Personne personne;
 
    @OneToOne(cascade = CascadeType.ALL, fetch=FetchType.LAZY)
    @JoinColumn(name="FONCTION", unique = true,nullable = true)
    private Fonction fonction;
 
    @OneToOne(cascade = CascadeType.ALL, fetch=FetchType.LAZY)
    @JoinColumn(name="LOGIN", unique = true,nullable = true)
    private Login login;
 
    public Occupation(){
        setDatedeb(new Date());
        setDatefin(new Date());
    }
 
    public Occupation(Date datedeb,Date datefin){
        setDatedeb(datedeb);
        setDatefin(datefin);
    }
    public Occupation(String datedeb,String datefin){
        try{
            setDatedeb(new SimpleDateFormat("dd/MM/yyyy").parse(datedeb));
        } catch(java.text.ParseException e){
            System.out.println("Error :"+ e.getMessage());
        }
 
        try{
            setDatefin(new SimpleDateFormat("dd/MM/yyyy").parse(datefin));
        } catch(java.text.ParseException e){
            System.out.println("Error :"+ e.getMessage());
        }   
    }
    public Occupation(Date datedeb,Date datefin,Login log){
        setDatedeb(datedeb);
        setDatefin(datefin);
        setLogin(log);
    }
     public Occupation(String datedeb,String datefin,Login log){
 
        try{
            setDatedeb(new SimpleDateFormat("dd/MM/yyyy").parse(datedeb));
        } catch(java.text.ParseException e){
            System.out.println("Error :"+ e.getMessage());
        }
 
        try{
            setDatefin(new SimpleDateFormat("dd/MM/yyyy").parse(datefin));
        } catch(java.text.ParseException e){
            System.out.println("Error :"+ e.getMessage());
        }
        setLogin(log);
    }
    public String toString() {
		return String.format("P[%d,%s,%s,%d,%s,%d]",
                getVersion(),
                new SimpleDateFormat("dd/MM/yyyy").format(getDatedeb()),
                new SimpleDateFormat("dd/MM/yyyy").format(getDatefin()),
                getPersonne().getMatricule(),
                getLogin().getLogin(),
                getFonction().getCode()
                );
	}
 
    public int getId() {
		return id;
	}
 
    public int getVersion() {
		return version;
	}
 
    public Date getDatedeb() {
		return datedeb;
	}
 
	public void setDatedeb(Date datedeb) {
		this.datedeb = datedeb;
	}
    public Date getDatefin() {
		return datefin;
	}
 
	public void setDatefin(Date datefin) {
		this.datefin = datefin;
	}
 
    public Login getLogin() {
		return login;
	}
 
	public void setLogin(Login login) {
		this.login = login;
	}
 
    public Personne getPersonne() {
		return personne;
	}
 
	public void setPersonne(Personne personne) {
		this.personne = personne;
	}
 
    public Fonction getFonction() {
		return fonction;
	}
 
	public void setFonction(Fonction fonction) {
		this.fonction = fonction;
	}
 
}
 
import java.io.Serializable;
import java.util.Date;
import java.text.SimpleDateFormat;
import javax.persistence.FetchType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Version;
@SuppressWarnings( { "unused", "serial" })
@Entity
@Table(name = "Fonction")
 
public class Fonction implements Serializable{
    @Id
	@Column(length = 20,unique = true,nullable = false)
    @GeneratedValue(strategy = GenerationType.AUTO)
	private int code;
 
    @Column(length = 150,nullable = false)
    private String libelle;
 
    @Column(nullable = false)
	@Version
	private int version;
 
    @ManyToOne()
	@JoinColumn(name = "typefonction_id", nullable = false)
	private TypeFonction typefonction ;
 
    @OneToOne(mappedBy = "fonction", fetch=FetchType.LAZY)
    private Occupation occupation;
 
    public Fonction(){
       this("Acun Libellé");
    }
    public Fonction(String libelle){
        setLibelle(libelle);
    }
 
    public String toString() {
		return String.format("P[%d,%d,%s,%s]",getVersion(), getCode(), getLibelle(),getTypeFonction().getLibelle());
	}
 
    public int getCode() {
		return code;
	}
 
	public void setCode(int code) {
		this.code = code;
	}
 
    public int getVersion() {
		return version;
	}
 
    public String getLibelle() {
		return libelle;
	}
 
	public void setLibelle(String libelle) {
		this.libelle = libelle;
	}
 
    public TypeFonction getTypeFonction() {
		return typefonction;
	}
 
	public void setTypeFonction(TypeFonction typefonction) {
		this.typefonction = typefonction;
	}
 
     public Occupation getOccupation() {
		return occupation;
	}
 
	public void setOccupation(Occupation occupation) {
		this.occupation = occupation;
	}
}
 
 
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
 
import java.util.Date;
import java.text.SimpleDateFormat;
 
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Version;
import javax.persistence.FetchType;
 
@SuppressWarnings( { "unused", "serial" })
@Entity
@Table(name = "TypeFonction")
 
public class TypeFonction implements Serializable{
    @Id
	@Column(length = 20,unique = true,nullable = false)
	private String code;
 
    @Column(nullable = false)
	@Version
	private int version;
 
    @Column(length = 150,nullable = false)
    private String libelle;
 
    // relation OneToMany non inverse (absence de mappedby) TypeFonction (one) -> Fonction (many)
	// implémentée par une table de jointure TypeFonction_Fonction pour qu'à partir d'un type de fonction
	// on puisse atteindre plusieurs fonctions
	@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
	private Set<Fonction> fonctions = new HashSet<Fonction>();
 
    public TypeFonction(){
       this("code","Acun Libellé");
    }
    public TypeFonction(String code,String libelle){
        setCode(code);
        setLibelle(libelle);
    }
    public String toString() {
		return String.format("P[%d,%s,%s]",getVersion(), getCode(), getLibelle());
	}
 
    public String getCode() {
		return code;
	}
 
	public void setCode(String code) {
		this.code = code;
	}
    public String getLibelle() {
		return libelle;
	}
 
    public int getVersion() {
		return version;
	}
 
	public void setLibelle(String libelle) {
		this.libelle = libelle;
	}
 
    public Set<Fonction> getFonctions() {
		return fonctions;
	}
 
	public void setFonctions(Set<Fonction> fonctions) {
		this.fonctions = fonctions;
	}
    // association bidirectionnelle TypeFonction <--> Fonction
	public void addFonction(Fonction fonction) {
		fonctions.add(fonction);
		fonction.setTypeFonction(this);
	}
}
Exécution
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
 
Personne p1 = new Personne("p1", "Paul", new SimpleDateFormat("dd/MM/yy").parse("31/01/2000"), true, 2);
		Personne p2 = new Personne("p2", "Sylvie", new SimpleDateFormat("dd/MM/yy").parse("05/07/2001"), false, 0);
		Personne p3 = new Personne("p3", "Coulibaly", new SimpleDateFormat("dd/MM/yy").parse("05/07/2001"), false, 0);
		Personne p4 = new Personne("p4", "Bambino", new SimpleDateFormat("dd/MM/yy").parse("31/01/2000"), true, 2);
		Personne p5 = new Personne("p5", "fresco", new SimpleDateFormat("dd/MM/yy").parse("05/07/2001"), false, 0);
		Personne p6 = new Personne("p6", "Bamba", new SimpleDateFormat("dd/MM/yy").parse("05/07/2001"), false, 0);
        Personne p7 = new Personne("p8", "Cynthia", new SimpleDateFormat("dd/MM/yy").parse("05/07/2001"), false, 0);
        Personne p8 = new Personne("p9", "CoulBoul", new SimpleDateFormat("dd/MM/yy").parse("05/07/2001"), false, 0);
		service.savePersonnes(new Personne[] { p1, p2, p3, p4, p5,p6,p7,p8 });
        Nature rec = new Nature("Recette");
        Nature dep = new Nature("Dépense");
        service.saveNatures(new Nature[] { rec, dep});
 
        Login l1 = new Login("jpa","jpa");
        Login l2 = new Login("laplace","islam");
        service.saveLogins(new Login[] { l1, l2});
        // TypeFonction
        TypeFonction adm = new TypeFonction("ADM","Administarteur");
        TypeFonction chf = new TypeFonction("CHF","Chef de service");
        TypeFonction ags = new TypeFonction("AGS","Agent de Saisie");
        service.saveTypeFonctions(new TypeFonction[] { adm, chf,ags});
        Fonction fadm = new Fonction("Administarteur du trésor");
        //fadm.setTypeFonction(adm);
        Fonction fchf = new Fonction("Chef de service récouvrement");
        //fchf.setTypeFonction(chf);
        Fonction fags = new Fonction("Agent de Saisie de Rec");
        //fags.setTypeFonction(ags);
        service.saveFonctions(new Fonction[] { fadm, fchf,fags});
        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);
        //o1.setPersonne(p1);
        o1.setFonction(fadm);
        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);
        //o2.setPersonne(p5);
        o2.setFonction(fchf);
        service.saveOccupations(new Occupation[] { o1, o2});
en retour j'ai l'erreur:
run:
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.04 12:37:29.578--ServerSession(29751107)--TopLink, version: Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))
[TopLink Info]: 2009.02.04 12:37:29.937--ServerSession(29751107)--file:/C:/Netbeans/workspace/NetBeansProjects/HibernateTest/src/-jpa login successful
Exception in thread "main" java.lang.NoSuchMethodError: mis.cinq.entites.Fonction._toplink_gettypefonction()Lmis/cinq/entites/TypeFonction;
at mis.cinq.entites.Fonction.getTypeFonction(Fonction.java:82)
at mis.cinq.entites.Fonction.toString(Fonction.java:58)
at java.lang.String.valueOf(String.java:2615)
at oracle.toplink.essentials.queryframework.ObjectLevelModifyQuery.toString(ObjectLevelModifyQuery.java:263)
at oracle.toplink.essentials.exceptions.DatabaseException.getMessage(DatabaseException.java:203)
at oracle.toplink.essentials.exceptions.TopLinkException.toString(TopLinkException.java:261)
at oracle.toplink.essentials.logging.DefaultSessionLog.log(DefaultSessionLog.java:100)
at oracle.toplink.essentials.internal.sessions.AbstractSession.log(AbstractSession.java:1992)
at oracle.toplink.essentials.internal.sessions.AbstractSession.logThrowable(AbstractSession.java:2949)
at oracle.toplink.essentials.internal.sessions.AbstractSession.handleException(AbstractSession.java:1724)
at oracle.toplink.essentials.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:965)
at oracle.toplink.essentials.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:894)
at oracle.toplink.essentials.internal.sessions.CommitManager.commitNewObjectsForClassWithChangeSet(CommitManager.java:254)
at oracle.toplink.essentials.internal.sessions.CommitManager.commitAllObjectsWithChangeSet(CommitManager.java:175)
at oracle.toplink.essentials.internal.sessions.AbstractSession.writeAllObjectsWithChangeSet(AbstractSession.java:2638)
at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.commitToDatabase(UnitOfWorkImpl.java:1030)
at oracle.toplink.essentials.internal.ejb.cmp3.base.RepeatableWriteUnitOfWork.commitToDatabase(RepeatableWriteUnitOfWork.java:387)
at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithChangeSet(UnitOfWorkImpl.java:1112)
at oracle.toplink.essentials.internal.ejb.cmp3.base.RepeatableWriteUnitOfWork.commitRootUnitOfWork(RepeatableWriteUnitOfWork.java:91)
at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.commitAndResume(UnitOfWorkImpl.java:842)
at oracle.toplink.essentials.internal.ejb.cmp3.transaction.base.EntityTransactionImpl.commit(EntityTransactionImpl.java:87)
at oracle.toplink.essentials.internal.ejb.cmp3.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:45)
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:456)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:732)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:701)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:321)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy19.saveFonction(Unknown Source)
at mis.cinq.service.Service.saveFonctions(Service.java:178)
at mis.cinq.view.InitDB.fill(InitDB.java:86)
at mis.cinq.view.InitDB.main(InitDB.java:36)
Java Result: 1
BUILD SUCCESSFUL (total time: 4 seconds)
Vraiment j'ai besoin de votre aide pour comprendre