Bonjour a tous, je fais appelle a vous car j'ai grand besoin de votre aide, car cela va faire un peu plus de 6h que je poireaute sur un probleme qui me rend completement dingue. J'ai beau cherché dans les forums, et faire ce que les gens disent, rien ne marche, je ne cesse de lire mon code encore et encore et encore, meme chose avec ce que m'indique la console mais je ne comprend absolument pas pourquoi on m'indique le probleme suivant :
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 Grave: "Servlet.service()" pour la servlet com.supinfo.notetonsta.servlet.RegisterInterventionServlet a généré une exception javax.persistence.PersistenceException: org.hibernate.PropertyAccessException: could not get a field value by reflection getter of com.supinfo.notetonsta.entity.Speaker.idSpeaker at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1214) at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1147) at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1153) at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:678) at com.supinfo.notetonsta.dao.jpa.JpaInterventionDao.addIntervention(JpaInterventionDao.java:26) at com.supinfo.notetonsta.servlet.RegisterInterventionServlet.doPost(RegisterInterventionServlet.java:65) at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: org.hibernate.PropertyAccessException: could not get a field value by reflection getter of com.supinfo.notetonsta.entity.Speaker.idSpeaker at org.hibernate.property.DirectPropertyAccessor$DirectGetter.get(DirectPropertyAccessor.java:62) at org.hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:227) at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:3850) at org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:3558) at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:203) at org.hibernate.engine.ForeignKeys$Nullifier.isNullifiable(ForeignKeys.java:159) at org.hibernate.engine.ForeignKeys$Nullifier.nullifyTransientReferences(ForeignKeys.java:91) at org.hibernate.engine.ForeignKeys$Nullifier.nullifyTransientReferences(ForeignKeys.java:69) at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:310) at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129) at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:69) at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:179) at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:135) at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:61) at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:808) at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:782) at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:786) at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:672) ... 20 more Caused by: java.lang.IllegalArgumentException: Can not set int field com.supinfo.notetonsta.entity.Speaker.idSpeaker to java.lang.Integer at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source) at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source) at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(Unknown Source) at sun.reflect.UnsafeIntegerFieldAccessorImpl.getInt(Unknown Source) at sun.reflect.UnsafeIntegerFieldAccessorImpl.get(Unknown Source) at java.lang.reflect.Field.get(Unknown Source) at org.hibernate.property.DirectPropertyAccessor$DirectGetter.get(DirectPropertyAccessor.java:59) ... 38 more
et voici les codes concernés par ce probleme :
Intervention.java
la methode qui permet d'enregistrer l'intervention dans sa table : (methode qui se situe dans JpaInterventionDao)
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 @Entity @Table(name="INTERVENTIONS") public class Intervention implements Serializable { /** * */ private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private int idIntervention; private String subject; private String description; private String beginDate; private String endDate; private String status; @ManyToOne(targetEntity=Speaker.class) // le ManyToOne fait toujours reference à l'entité @JoinColumn(name="speaker_fk") private int speaker; @ManyToOne(targetEntity=Campus.class) @JoinColumn(name="campus_fk") private Campus campus;
et enfin voici le doPost de la servlet qui enregistre l'intervention apres avoir remplit le formulaire (cette servlet ce nomme RegisterInterventionServlet)
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 @Override public Intervention addIntervention(Intervention intervention) { // TODO Auto-generated method stub Intervention result = null; EntityManager em = emf.createEntityManager(); try { em.getTransaction().begin(); em.persist(intervention); em.getTransaction().commit(); result = intervention; } finally { if(em.getTransaction().isActive()) em.getTransaction().rollback(); em.close(); } return result; }
les erreurs s'affiche lorsque j'enregistre l'intervention dans une table c'est a dire a cette ligne :
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 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub Intervention intervention = new Intervention(); Campus campus = new Campus(request.getParameter("campus")); intervention.setSubject(request.getParameter("subject")); intervention.setCampus(campus); intervention.setBeginDate(request.getParameter("from")); intervention.setEndDate(request.getParameter("to")); intervention.setDescription(request.getParameter("description")); intervention.setStatus(request.getParameter("status")); // intervention.setIdSpeaker(4); interventionDao.addIntervention(intervention); }
le probleme c'est que je vois vraiment pas le rapport entre cecii : Caused by: org.hibernate.PropertyAccessException: could not get a field value by reflection getter of com.supinfo.notetonsta.entity.Speaker.idSpeaker
Code : Sélectionner tout - Visualiser dans une fenêtre à part interventionDao.addIntervention(intervention);
et le fait que j'enregistre l'intervention.
J'espere que vous avez deja rencontrer ce genre de probleme et que vous pourrez m'aider a le resoudre car cette erreur commence a me fatiguer . Meme si vous n'etes pas sur, n'hesiter pas a poster vos commentaires car je pense que cela me sera tres utile.
En attendant je vous remercie d'avance pour vos interventions
Merci
Partager