IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Problème de simple cote dans une requete


Sujet :

Hibernate Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Problème de simple cote dans une requete
    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 :
    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
    J'ai épuiser mon stock d'idées j'ai essayé des tas de chose en doublant les simples cotes, en mettant \' ou \".
    Si vous avez une idées aidez moi.
    Merci

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Uilise les méthodes de l'interface Query comme setParameter, ça dévrait résoudre ton problème.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Merci fr1man et merci a toi aussi cyril,
    grâce à vous j'ai trouvé.
    Voici mon nouveau code pour ceux que ça interesse :
    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
     
    try {
    	Session sessionHibernate = HibernateUtil.currentSession();
    	Query tla = sessionHibernate.createQuery("FROM Client WHERE "+ Client.PROP_RAISONSOC+" =?");
    	tla.setParameter(0, c.getRaisonsoc());
    	List<Client> isPresent=tla.list();
    	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();
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Insertion de simples cote dans une table
    Par bond70 dans le forum Langage
    Réponses: 20
    Dernier message: 05/07/2010, 19h45
  2. Réponses: 1
    Dernier message: 06/06/2006, 16h51
  3. [débutant] problème de condition dans une requete
    Par banker dans le forum Access
    Réponses: 5
    Dernier message: 22/03/2006, 13h52
  4. [VBA-E]problème de date dans une requete
    Par isa21493 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 24/02/2006, 11h45
  5. [oracle][delphi] Problème format de date dans une requete
    Par le_parrain dans le forum Bases de données
    Réponses: 1
    Dernier message: 21/07/2005, 10h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo