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 :

Requête SQL aucun effet sur la base ?


Sujet :

Hibernate Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    avril 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : avril 2007
    Messages : 219
    Points : 200
    Points
    200
    Par défaut Requête SQL aucun effet sur la base ?
    Bonjour,

    Je n'avais jamais utilisé de requêtes SQL sur hibernate, voici 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
     
     
    private static void createTable() {
    		Transaction tx = null;		
    		Session session = HibernateSessionFactory.getSession();	
    		try {		
    			tx = session.beginTransaction();
    			session.createSQLQuery("insert into honey (name) values ('sylvain')");
    			tx.commit();		
    		}catch(Exception e) {
    			e.printStackTrace();			
    			if (tx != null)				
    				tx.rollback();		
    			}	
    		}
    Quand je fais ca il ne se passe rien sur la base de données (MYSQL), aucune erreur au niveau du programme ou de la base. J'ai donc utiliser la requete manuellement dans MySql et il n'y aucun probleme. L'insertion se fait tres bien.

    Y'a t'il un commit special pour le requetage SQL ?

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : janvier 2006
    Messages : 365
    Points : 494
    Points
    494
    Par défaut
    Eh bien, le problème vient sûrement du fait que dans ton code tu créés la requête, mais à aucun moment tu ne l'exécute. A l'intérieur de ta transaction, tu devrais avoir quelque chose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Query query = session.createSQLQuery("insert into honey (name) values ('sylvain')");
    query.executeUpdate();
    SCJP 5 / SCBCD 1.3 Certified

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    avril 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : avril 2007
    Messages : 219
    Points : 200
    Points
    200
    Par défaut
    Salut,

    C'est certainement la cause, cependant j'ai essayé avec ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    SQLQuery query = session.createSQLQuery("insert into honey (name) values ('sylvain')");
    query.executeUpdate();
    J'ai une erreur du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Exception in thread "main" java.lang.UnsupportedOperationException: Update queries only supported through HQL
    	at org.hibernate.impl.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:592)
    	at com.hibernate.example.HibernateTest.createTable(HibernateTest.java:99)
    	at com.hibernate.example.HibernateTest.main(HibernateTest.java:41)
    Que ce soit en passant par une Query comme toi ou une SQLQuery.

    Une autre idée ?

    Merci d'avance.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : mars 2007
    Messages : 122
    Points : 126
    Points
    126
    Par défaut
    Salut,

    Si tu utilises la version 3 d'Hibernate, l'INSERT n'existe plus ..
    Il te faudra passer par du SQL et plus du HQL
    Java, c'est pas de la menthe à l'eau.. !!

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : janvier 2006
    Messages : 365
    Points : 494
    Points
    494
    Par défaut
    Oui, en fait, INSERT n'est pas supporté en tant que tel, même avec HQL, seul est supporté INSERT ... SELECT.
    http://www.hibernate.org/hib_docs/v3...l#batch-direct
    Lire un peu en bas dans le paragraphe cité.
    Donc, pour faire des insertions classiques, il ne reste qu'à utiliser la methode Session.save() ou une méthode équivalente. Sinon il faudrait revenir au SQL natif sans passer par Hibernate, ou utiliser iBATIS, par exemple.
    SCJP 5 / SCBCD 1.3 Certified

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    avril 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : avril 2007
    Messages : 219
    Points : 200
    Points
    200
    Par défaut
    Merci c'est sympas,

    Je commencais à m'ennerver sur le programme .

    J'ai donc choisi le tres mauvais exemple de requête pour faire du SQL avec hibernate.

    @+

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

Discussions similaires

  1. Requête SQL avec jointure sur trois tables
    Par pit2121 dans le forum SQL
    Réponses: 0
    Dernier message: 19/05/2008, 21h24
  2. Réponses: 0
    Dernier message: 16/03/2008, 19h38
  3. Requête SQL avec paramètre sur BDD Access
    Par BigMike dans le forum Windows Forms
    Réponses: 3
    Dernier message: 07/06/2007, 13h21
  4. [WinForms]sql server : ecriture sur la base en meme temps.
    Par jejefeds dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 15/11/2006, 11h28
  5. [SQL] aucun ajout dans la base de donnée impossible
    Par gtraxx dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 22/09/2006, 18h49

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