Bonjour a tous
Je développe une appli web en J2EE et j'utilise Hibernate.
Pour mon appli j'ai besoin d'extraire des infos de fichiers Excel.
Je dois inserer des clients dans ma base.
Tout fonctionnne correctement sauf lorqsu'il y a une simple cote dans leur nom ( ex : CIAT (Cie Industrielle d'Applications Thermiques)).
avant d'inserer ce client je teste d'après le nom si il est présent dans la base et c'est à ce moment que ça plante .
Voici un bout de mon code:
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 @SuppressWarnings("unchecked") private void loadClient(Workbook wb) //Client { Sheet maFeuille= wb.getSheet("Clients"); System.out.println("Nombre de Clients :::::::::::::::::::::::::: "+maFeuille.getRows()); Client c= new Client(); for(int i=1; i<maFeuille.getRows(); i++) // pour chaque lignes { c =new Client(); c.setLastmaj("Excel "+new Date()); c.setRaisonsoc(maFeuille.getCell(0,i).getContents()); c.setActivite(maFeuille.getCell(1,i).getContents()); //System.out.println("contenu :"+maFeuille.getCell(2,i).getContents()); setNbemploye(c, maFeuille.getCell(2,i).getContents()); c.setMaisonmere(maFeuille.getCell(3,i).getContents()); setSecteurcap(c, maFeuille.getCell(4,i).getContents()); c.setNumnomrue(maFeuille.getCell(5,i).getContents()); c.setLieubp(maFeuille.getCell(6,i).getContents()); setCP(c, maFeuille.getCell(8,i).getContents()); c.setVille(maFeuille.getCell(9,i).getContents()); c.setPays(maFeuille.getCell(10,i).getContents()); c.setSite(maFeuille.getCell(11,i).getContents()); c.setContactcap(maFeuille.getCell(12,i).getContents()); try { Session sessionHibernate = HibernateUtil.currentSession(); System.out.println("FROM Client WHERE "+ Client.PROP_RAISONSOC+"='"+c.getRaisonsoc()+"'"); List<Client> isPresent = (List<Client>)sessionHibernate.find("FROM Client WHERE "+ Client.PROP_RAISONSOC+" ='"+c.getRaisonsoc()+"'"); if(isPresent.isEmpty())// test pour savoir si le client est présent, si oui on ne fait rien sinon on enregistre le nouveau. { Transaction tx = sessionHibernate.beginTransaction(); sessionHibernate.save(c); tx.commit(); } HibernateUtil.closeSession(); } catch (HibernateException e) { System.out.println("Erreur de sauvegarde du client :"+c.getRaisonsoc()); e.printStackTrace(); } } }
et voici ce que j'ai dans la console :
J'ai épuiser mon stock d'idées j'ai essayé des tas de chose en doublant les simples cotes, en mettant \' ou \".
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 29 oct. 2007 17:42:00 org.apache.catalina.loader.WebappClassLoader loadClass INFO: Illegal access: this web application instance has been stopped already. Could not load java.net.BindException. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact. java.lang.IllegalStateException at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1248) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1208) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at com.mysql.jdbc.CommunicationsException.<init>(CommunicationsException.java:161) at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2759) at com.mysql.jdbc.MysqlIO.quit(MysqlIO.java:1410) at com.mysql.jdbc.Connection.realClose(Connection.java:4900) at com.mysql.jdbc.Connection.cleanup(Connection.java:2061) at com.mysql.jdbc.Connection.finalize(Connection.java:3376) at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method) at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:83) at java.lang.ref.Finalizer.access$100(Finalizer.java:14) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:160) 29 oct. 2007 17:42:00 net.sf.hibernate.connection.DriverManagerConnectionProvider close INFO: cleaning up connection pool: jdbc:mysql://localhost/clientoracle Nombre de Clients :::::::::::::::::::::::::: 3 FROM Client WHERE Raisonsoc='CIAT (Cie Industrielle d'Applications Thermiques)' Erreur de sauvegarde du client :CIAT (Cie Industrielle d'Applications Thermiques) net.sf.hibernate.QueryException: Incorrect query syntax [FROM com.capgemini.clientoracle.modele.Client WHERE Raisonsoc ='CIAT (Cie Industrielle d'Applications Thermiques)'] at net.sf.hibernate.hql.QueryTranslator.compile(QueryTranslator.java:166) at net.sf.hibernate.hql.QueryTranslator.compile(QueryTranslator.java:138) at net.sf.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:294) at net.sf.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:1562) at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1533) at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1521) at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1513) at com.capgemini.clientoracle.traitements.excel.ExtractExcel.loadClient(ExtractExcel.java:173) at com.capgemini.clientoracle.traitements.excel.ExtractExcel.extraire(ExtractExcel.java:35) at com.capgemini.clientoracle.servlets.ServletImportation.doPost(ServletImportation.java:23) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Thread.java:595) Caused by: java.util.NoSuchElementException at java.util.LinkedList.remove(LinkedList.java:644) at java.util.LinkedList.removeLast(LinkedList.java:144) at net.sf.hibernate.hql.WhereParser.closeExpression(WhereParser.java:279) at net.sf.hibernate.hql.WhereParser.token(WhereParser.java:233) at net.sf.hibernate.hql.WhereParser.end(WhereParser.java:275) at net.sf.hibernate.hql.ClauseParser.endChild(ClauseParser.java:100) at net.sf.hibernate.hql.ClauseParser.end(ClauseParser.java:108) at net.sf.hibernate.hql.PreprocessingParser.end(PreprocessingParser.java:143) at net.sf.hibernate.hql.ParserHelper.parse(ParserHelper.java:30) at net.sf.hibernate.hql.QueryTranslator.compile(QueryTranslator.java:149) ... 25 more FROM Client WHERE Raisonsoc='CIAT (Cie Industrielle d'Applications Thermiques)' Erreur de sauvegarde du client :CIAT (Cie Industrielle d'Applications Thermiques) net.sf.hibernate.QueryException: Incorrect query syntax [FROM com.capgemini.clientoracle.modele.Client WHERE Raisonsoc ='CIAT (Cie Industrielle d'Applications Thermiques)'] at net.sf.hibernate.hql.QueryTranslator.compile(QueryTranslator.java:166) at net.sf.hibernate.hql.QueryTranslator.compile(QueryTranslator.java:138) at net.sf.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:294) at net.sf.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:1562) at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1533) at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1521) at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1513) at com.capgemini.clientoracle.traitements.excel.ExtractExcel.loadClient(ExtractExcel.java:173) at com.capgemini.clientoracle.traitements.excel.ExtractExcel.extraire(ExtractExcel.java:35) at com.capgemini.clientoracle.servlets.ServletImportation.doPost(ServletImportation.java:23) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Thread.java:595) Caused by: java.util.NoSuchElementException at java.util.LinkedList.remove(LinkedList.java:644) at java.util.LinkedList.removeLast(LinkedList.java:144) at net.sf.hibernate.hql.WhereParser.closeExpression(WhereParser.java:279) at net.sf.hibernate.hql.WhereParser.token(WhereParser.java:233) at net.sf.hibernate.hql.WhereParser.end(WhereParser.java:275) at net.sf.hibernate.hql.ClauseParser.endChild(ClauseParser.java:100) at net.sf.hibernate.hql.ClauseParser.end(ClauseParser.java:108) at net.sf.hibernate.hql.PreprocessingParser.end(PreprocessingParser.java:143) at net.sf.hibernate.hql.ParserHelper.parse(ParserHelper.java:30) at net.sf.hibernate.hql.QueryTranslator.compile(QueryTranslator.java:149) ... 25 more Nombre de Projets :::::::::::::::::::::::::: 2 Nombre d'interClient :::::::::::::::::::::::::: 1 Nombre d'interOracle :::::::::::::::::::::::::: 1
Si vous avez une idées aidez moi.
Merci
Partager