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 :

update non effectué


Sujet :

Hibernate Java

  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut update non effectué
    Hello,

    Je tente de faire une mise à jour d'une entité et celle-ci n'est pas mis à jour dans la base

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Localisation parcelle = getRemoteParcelleDao().findById(
    					selectedParcelle.getId());
    if (parcelle != null) {
      LOG.debug("PARCELLE EXIST WILL BE UPDATE " + selectedParcelle.getId()   
       + " " + selectedParcelle.getLieuDit());
      remoteParcelleDao.update(selectedParcelle);
    }
    parcelle n'est pas null est selectedParcelle contient le même id que parcelle

    voici le code de mon dao

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void update(Localisation parcelle) {
       getHibernateTemplate().update(parcelle);
       getHibernateTemplate().flush();
    }
    aucune exception n'est soulevée

    et dans mon log on peut voir l'élément avec son id et son lieuDit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PARCELLE EXIST WILL BE UPDATE 187 Rechthalten
    alors qu'une fois le update (si on peut dire ca) effecuté la valeur dans la base correspond toujours à la valeur précédente

    187 Rechthalten III

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    c'est le flush qui posait problème ...

    edit : Le problème est toujours existant

    avec clear, flush ou sans rien à la fin de l'update

    j'ai également testé en récupérant la session moi meme sans passer par spring
    (juste pour le test car dans un context transactionel ca serait pas la solution)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	public void update(Localisation parcelle) {
    		//getHibernateTemplate().update(parcelle);
    		Session session = getSession();
    		session.getSessionFactory().openSession();
    		session.update(parcelle);
    		session.close();
    	}
    sans avoir un meilleur résultat

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 383
    Points : 468
    Points
    468
    Par défaut
    Citation Envoyé par *alexandre* Voir le message
    Hello,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Localisation parcelle = getRemoteParcelleDao().findById(
    					selectedParcelle.getId());
    if (parcelle != null) {
      LOG.debug("PARCELLE EXIST WILL BE UPDATE " + selectedParcelle.getId()   
       + " " + selectedParcelle.getLieuDit());
      remoteParcelleDao.update(selectedParcelle);
    }
    ce que je comprends pas c'est que tu ne modifies pas l'instance selectedParcelle avant de la passer à la méthode update()

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    Citation Envoyé par slevy Voir le message
    ce que je comprends pas c'est que tu ne modifies pas l'instance selectedParcelle avant de la passer à la méthode update()
    selectedParcelle represente la parcelle selectionner depuis l'interface utilisateur qui contient les nouvelles valeurs

    depuis jsf j accèdes aux propriétés #{sessionBean.selectedParcelle.nomPropriete}

    donc les propriétés sont belles et bien modifiées dans l'objet

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    dans la doc il explicite pourtant ceci

    I saved / deleted / updated an object / collection but I can't see the changes in the database!

    Hibernate will not execute any SQL until you either call Transaction.commit() (if using the Transaction API) or Session.flush() (if you are not) at the end of a session to flush your in-memory changes to the database.

    If you are not using the Transaction API, you must then explicitly commit the transaction (by committing the JTA transaction or JDBC Connection).

    Je ne comprend donc pas pourquoi en forcant le flush rien ne se passe

  6. #6
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Tu peux essayer d'ajouter un commit.

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    ca va pas être possible car je récupère la session depuis spring

    voir l implémentation ici http://www.google.com/codesearch?hl=...eTemplate.java

    et c'est un problème qui n'apparait que dans ce context et pas dans le reste de l'application alors que la même stratégie est utilisée

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    J'ai également testé les solutions suivantes

    -utilisation d'un merge à la place d'un update
    -utilisation d'une transaction pour effectuer un commit
    -utilisation de saveOrUpdate
    -utilisation de update avec un set des valeurs de l'élément récupérer à l'aide d'un findById

    D'autres idées ?

    edit : j'ai également testé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       getHibernateTemplate().evict(parcelle);
       getHibernateTemplate().refresh(parcelle);
       getHibernateTemplate().merge(parcelle);

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    toujours aucune piste ?

    edit : pour le moment je fais un save et je change les références de l'objet en attendant de trouvé mieux ...

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

Discussions similaires

  1. [PDO] PDO.sqlite : update non effectué, mais pas d'erreur
    Par Yosko dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/04/2012, 16h55
  2. [SyncFramework 2.1] Update non effectué
    Par Invité dans le forum Framework .NET
    Réponses: 1
    Dernier message: 13/10/2011, 09h56
  3. update d'objets non effectué
    Par breezer911 dans le forum Hibernate
    Réponses: 1
    Dernier message: 07/08/2007, 19h52
  4. Réponses: 4
    Dernier message: 02/07/2007, 15h56
  5. Update non effectué
    Par nellynew dans le forum Access
    Réponses: 1
    Dernier message: 13/09/2006, 12h37

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