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 :

[HQL] probleme sur requete Update


Sujet :

Hibernate Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut [HQL] probleme sur requete Update
    Bonjour tout le monde,
    Je travaille actuellement sur une appli incluant la gestion de la persistance via hibernate, vous l'aurez deviné....
    Dans cette application, je dois changer le champ id_utilisateur d'occurences d 'une table "logs" .
    Je voudrais éviter alors de passer par des POJOS pour ne pas me retrouver avec un tableau en mémoire de taille trop conséquente(en effet, il peut y avoir beaucoup de logs correspondant à un user). Charger un tableau avec tous les logs correspondant à un User via une requete "get/search" puis les changer n'est alors pas une solution.
    Je décide alors de passer par une requete HQL comme suit :
    List<IHistoryEvent> historyEvents = getHibernateTemplate().find("from HistoryEventImpl h where h.id=1");
    System.out.println(historyEvents.get(0).getUsername());
    //getHibernateTemplate().bulkUpdate("UPDATE HistoryEventImpl h SET h.username='test' WHERE h.id=1");
    getHibernateTemplate().flush();
    getSession().createQuery("UPDATE HistoryEventImpl h SET h.username='test' WHERE h.id=1").executeUpdate();
    getSession().flush();
    List<IHistoryEvent> historyEvents2 = getSession().createQuery("from HistoryEventImpl where id=1").list();
    Quelque soit la méthode que j'utilise: bulkUpdate() ou encore createQuery(), le résultat est le même :

    Hibernate: select historyeve0_.PK_LOG_ID as PK1_18_, historyeve0_.EVT_USERNAME as EVT2_18_, historyeve0_.EVT_SCO_UUID as EVT3_18_, historyeve0_.EVT_COMPANY_NAME as EVT4_18_, historyeve0_.EVT_TRAINING_NAME as EVT5_18_, historyeve0_.EVT_TRAINING_PLAN_NAME as EVT6_18_, historyeve0_.EVT_SCO_NAME as EVT7_18_, historyeve0_.EVT_SCO_DURATION as EVT8_18_, historyeve0_.EVT_TEST_UID as EVT9_18_, historyeve0_.EVT_TRAINING_PLAN_ID as EVT10_18_, historyeve0_.EVT_COURSE_ID as EVT11_18_, historyeve0_.EVT_USER_ID as EVT12_18_, historyeve0_.EVT_EVENT as EVT13_18_, historyeve0_.EVT_FIRSTNAME as EVT14_18_, historyeve0_.EVT_LASTNAME as EVT15_18_, historyeve0_.EVT_DATE as EVT16_18_ from EVT_HISTORY historyeve0_ where historyeve0_.PK_LOG_ID=1

    nico

    09:41:38,263 WARN [FromElementType] Using non-qualified column reference [username -> ([EVT_USERNAME])]
    09:41:38,264 WARN [FromElementType] Using non-qualified column reference [id -> ([PK_LOG_ID])]

    Hibernate: update EVT_HISTORY set EVT_USERNAME='test' where PK_LOG_ID=1


    Hibernate: select historyeve0_.PK_LOG_ID as PK1_18_, historyeve0_.EVT_USERNAME as EVT2_18_, historyeve0_.EVT_SCO_UUID as EVT3_18_, historyeve0_.EVT_COMPANY_NAME as EVT4_18_, historyeve0_.EVT_TRAINING_NAME as EVT5_18_, historyeve0_.EVT_TRAINING_PLAN_NAME as EVT6_18_, historyeve0_.EVT_SCO_NAME as EVT7_18_, historyeve0_.EVT_SCO_DURATION as EVT8_18_, historyeve0_.EVT_TEST_UID as EVT9_18_, historyeve0_.EVT_TRAINING_PLAN_ID as EVT10_18_, historyeve0_.EVT_COURSE_ID as EVT11_18_, historyeve0_.EVT_USER_ID as EVT12_18_, historyeve0_.EVT_EVENT as EVT13_18_, historyeve0_.EVT_FIRSTNAME as EVT14_18_, historyeve0_.EVT_LASTNAME as EVT15_18_, historyeve0_.EVT_DATE as EVT16_18_ from EVT_HISTORY historyeve0_ where historyeve0_.PK_LOG_ID=1

    nico
    La requête update semble bien passer mais le résultat n'est pas modifié. Pour info, j'ai vérifié que la requête était bonne et que le problème ne venait pas d'une synchro base/POJO.

    Merci pour une éventuelle solution.

  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
    tu ne commit pas ta transaction ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    le contexte transactionel est géré par hibernate.

    J'ai réssolu mon problème qui apparement était le nom des champs dans la requete, il fallait mettre le nom des colones

Discussions similaires

  1. Probleme sur requete "Select for update"
    Par claudge dans le forum DB2
    Réponses: 13
    Dernier message: 17/09/2013, 17h55
  2. [MySQL] Probleme sur requetes imbriquées
    Par joxbl dans le forum Langage SQL
    Réponses: 41
    Dernier message: 12/04/2006, 17h20
  3. [MySQL] Probleme avec requete UPDATE
    Par Chromatic dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 09/02/2006, 13h17
  4. Probleme avec requete UPDATE sur ACCESS
    Par Chromatic dans le forum VBA Access
    Réponses: 2
    Dernier message: 05/01/2006, 10h03
  5. Probleme de requete UPDATE pour modifier de champs ds DBGRID
    Par cmoimeme dans le forum Bases de données
    Réponses: 26
    Dernier message: 06/12/2005, 12h56

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