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 :

Java insert BdD executeUpdate


Sujet :

Hibernate Java

  1. #1
    Membre confirmé Avatar de ritchie23
    Profil pro
    Inscrit en
    Août 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2008
    Messages : 122
    Par défaut Java insert BdD executeUpdate
    Bonjour,

    voila je galère juste sur une insertion dans une base de données.

    Voilà ma ligne de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int majTable = dao.executeUpdate("INSERT INTO NoeudOrig VALUES(9)");
    Ci-dessous ma méthode executeUpdate (elle est à la fin)

    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
     
    public class DaoImpl
    extends HibernateDaoSupport
    implements Dao{
     
     
    	public void save(List<Object> list){
    		for(Object obj : list){
    			getHibernateTemplate().save(obj);
    		}
    	}
     
    	public void saveOrUpdate(List<Object> list) {
    		for(Object obj : list){
    			getHibernateTemplate().saveOrUpdate(obj);
    			// AD le 2008/12/31 : permet de gagner de l'espace mémoire en évitant d'écrire inutilement dans la console
    			Session s = getHibernateTemplate().getSessionFactory().getCurrentSession();
    			s.flush();
    			s.clear();
    			// fin AD
    		}
    	}
     
    	@SuppressWarnings("unchecked")
    	public List<Object> findAll(Class entityClass) {
    //		return getHibernateTemplate().find("from " + entityClass.getName() + " a" );
    		return getHibernateTemplate()
    		.getSessionFactory()
    		.getCurrentSession()
    		.createQuery("from " + entityClass.getName() + " a" ).list();
    	}
     
    	@SuppressWarnings("unchecked")
    	public List<Object> executeQuery(String query){
    		return getHibernateTemplate()
    		.getSessionFactory()
    		.getCurrentSession()
    		.createQuery(query).list();
    	}
     
    	// RPE le 2008/09/30 : purge des données dans la BdD
    	@SuppressWarnings("unchecked")
    	public int executeUpdate(String query){
    		return getHibernateTemplate()
    		.getSessionFactory()
    		.getCurrentSession()
    		.createQuery(query).executeUpdate();
    	}
    	//fin RPE
    }
    En fait, je n'arrive pas à insérer la ligne de code dans a base de données PostgreSQL. En tapant directement la ligne via un éditeur de bdd (pgAdmin III), ca fonctionne !!

    Voilà mon message d'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
     
    10:19:30,327 ERROR PARSER:33 - line 1:55: expecting OPEN, found 'VALUES'
    10:19:30,327 ERROR LoaderImpl:57 - File skiped
    org.hibernate.hql.ast.QuerySyntaxException: expecting OPEN, found 'VALUES' near line 1, column 55 [INSERT INTO pratic.model.NoeudOrig VALUES(9)]
    	at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:31)
    	at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:24)
    	at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)
    	at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:258)
    	at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:157)
    	at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
    	at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
    	at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
    	at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
    	at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
    	at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
    	at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
    	at pratic.model.impl.DaoImpl.executeUpdate(DaoImpl.java:56)
    	at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296)
    	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
    	at $Proxy11.executeUpdate(Unknown Source)
    	at pratic.loader.impl.LoaderImpl.load(LoaderImpl.java:53)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
    	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
    	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    	at $Proxy12.load(Unknown Source)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:283)
    	at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:272)
    	at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)
    	at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPoolprat.java:529)
    Merci d'avance pour vos infos !!
    Ritchie.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Tu utilises Hibernate apparemment, et la syntaxe HQL de Hibernate est différente du SQL normal, notamment pour les insert je crois. Regarde la documentation de Hibernate, car tu n'utilises pas PostgreSQL directement mais à travers Hibernate, qui ajoute de l'abstraction au dessus de ton SGBD.

    A plus

  3. #3
    Membre confirmé Avatar de ritchie23
    Profil pro
    Inscrit en
    Août 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2008
    Messages : 122
    Par défaut
    Ok, merci, mais que proposes tu comme doc hibernate ?

    pour le moment, je n'ai vu que des choses du style : executeUpdate(objet);

    Par contre, ca fonctionne bien un executeUpdate(delete from file where n = '3');

    donc, j'aimerais faire quelque chose du style executeUpdate(insert ...);, même si l'intérieur de la parenthèse n'est pas du sql pur, mais de l'hibernate comme tu m'as indiqué au dessus.

    merci.
    Ritchie.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Mon ami gougleuh m'a donné ce lien : http://docs.jboss.org/hibernate/stab...l#batch-direct

    qui dit (entre autres)
    The pseudo-syntax for INSERT statements is: INSERT INTO EntityName properties_list select_statement. Some points to note:
    * Only the INSERT INTO ... SELECT ... form is supported; not the INSERT INTO ... VALUES ... form.
    Avec un exemple et des détails.

    Bon courage

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 104
    Par défaut
    Salut,

    pourquoi ne crées tu pas un objet de la classe NoeudOrig avec la valeur qui va bien suivi d'un save() ?
    Hibernate travaille avec les objets, pourquoi veux tu faire du sql ?

  6. #6
    Membre confirmé Avatar de ritchie23
    Profil pro
    Inscrit en
    Août 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2008
    Messages : 122
    Par défaut
    salut,

    parce que je ne sais pas me servir de la classe hibernate et des objets que l'on rentre en argument d'entré. Mais je veux bien un coup de pouce pour comprendre le processus.

    Sinon, j'ai déjà essayé executeUpdate(insert into ... select ...), et ca ne fonctionne pas non plus ...
    Il dit qu'il attend une instruction OPEN au lieu d'un SELECT

    Ritchie.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 104
    Par défaut
    Je vois que tu as des méthodes pour ajouter une collection d'objets, il suffit de faire pareil pour un seul objet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public void save(Object object){
    	     getHibernateTemplate().save(obj);
    	}
    Et avant, tu crées juste ton objet NoeudOrig que tu passes à la méthode save().

Discussions similaires

  1. [ACCESS][JAVA][INSERT][QUOTE]Pb insertion quot
    Par 205 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 31/01/2008, 17h00
  2. [Stratégie] Proxy java insertion de javascript dans du HTML
    Par rock in the air dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 03/12/2007, 09h51
  3. [MySQL] Prefixe pour insertion bdd !
    Par dekovince dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 29/05/2007, 16h24
  4. [JDBC]Java et bdd offline
    Par mat10000 dans le forum JDBC
    Réponses: 13
    Dernier message: 26/10/2005, 11h18
  5. Réponses: 4
    Dernier message: 13/04/2004, 19h12

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