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 :

[Hibernate 3] Suppression de données


Sujet :

Hibernate Java

  1. #1
    Membre habitué Avatar de bouchette63
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Points : 187
    Points
    187
    Par défaut [Hibernate 3] Suppression de données
    Bonjour,

    Je viens de migrer vers Hibernate 3.
    J'ai donc eu pas mal de modifications à effectuer au niveau de mes requêtes (e.g. Session.createQuery(-) à la place de Session.find(-) car ce dernier est désapprouvé).

    Mais lorsque je supprime un objet de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DbObject lDbObject = new DbObject();
    lDbObject.setId(pnCleObject);
     
    lSession.delete(lObject);
    Il me génère une exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ERROR  manager.ConfigMgr - <delete> : Impossible d'executer une commande hibernate : not-null property references a null or transient value: database.mapping.DbConfig.valeurConfig
    Pourtant tout fonctionnait bien sous Hibernate 2 ?
    Je ne vois pas où est le problème ?
    Peut-être que la fonction de session pour supprimer ne fonctionne plus, mais vu qu'elle est encore disponible j'en doute.

    Quelqu'un à une solution svp ?

    Merci pour votre aide.
    "Tout m'afflige, et me nuit, et conspire à me nuire" Racine

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Pour être sur de ce que tu fais tu peux recharger l'objet depuis la base pour être sur d'en avoir une version correcte, celà te permet par là même d'en vérifier l'existence:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DbObject lDbObject = session.load(DbObject.class, pnCleObject);
    if( lDbObject != null) {
      session.delete(lDbObject);
    }
    Ou sinon faire directement ça dans une requête HQL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int deletedEntities = session.createQuery("delete from DbObject d where d.id=:id").setInt("id",pnCleObject).executeUpdate();
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    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
    Il faut passer à ta méthode delete, un objet précédemment chargé.
    J'écrirais un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DbObject lDbObject = session.load(DbObject.class, pnCleObject);
    session.delete(lDbObject );

  4. #4
    Membre habitué Avatar de bouchette63
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Points : 187
    Points
    187
    Par défaut
    Merci pour vos réponses

    Donc j'ai testé en chargeant l'objet en utilisant la méthode load avant le delete et ça fonctionne. Mais ce n'est pas ce qu'il y a de plus rapide !!!

    Il y a un truc que je ne pige pas quand même, pourquoi dans Hibernate 2 ma méthode fonctionnait et là elle ne marche plus sous Hibernate 3
    delete accepte bien un objet qu'il identifie avec sa clé primaire pour le supprimer.

    Vaut mieux alors opter pour du HQL afin d'éviter deux requêtes : load et delete.
    "Tout m'afflige, et me nuit, et conspire à me nuire" Racine

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

Discussions similaires

  1. suppression des données
    Par nabil1 dans le forum Oracle
    Réponses: 6
    Dernier message: 07/04/2006, 13h38
  2. Problème d'espace disponible après suppression de données
    Par carjo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/03/2006, 15h48
  3. Suppression de données
    Par ledaker dans le forum Access
    Réponses: 3
    Dernier message: 10/03/2006, 17h10
  4. [C#] Limites de C# quand a la suppression de données
    Par Anonymous dans le forum Windows Forms
    Réponses: 6
    Dernier message: 28/01/2005, 23h18
  5. Suppression de données
    Par Julien Dufour dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/12/2004, 15h25

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