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 :

Comment savoir le résultat d'un update ?


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 442
    Par défaut Comment savoir le résultat d'un update ?
    Bonjour

    La javadoc nous dit:

    update

    public void update(Object object)
    throws HibernateException

    Update the persistent instance with the identifier of the given detached instance. If there is a persistent instance with the same identifier, an exception is thrown. This operation cascades to associated instances if the association is mapped with cascade="save-update".

    Parameters:
    object - a detached instance containing updated state
    Throws:
    HibernateException
    Et dans mon code, si j'update un objet qui n'existe pas en base, aucune exception n'est levée Et il n'y a pas de valeur de retour indiquant le résultat de l'update.

    Les bras m'en tombent quelque peu...

    Suis-je obligé de remplacer mon "hibernateSession.update(objet)" par une requête HQL "à la main" ?

    [Edit] pareil pour le delete... au secours

  2. #2
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Pour mettre a jour un objet, on utilise plutot saveOrUpdate.
    Cette methode levera une exception si ton objet n'existe pas.

    En effet update leve une exception seulement si il y'a un probleme d'integrite referentielle.
    D'ailleurs cette methode est deprecated(depuis la version 3 je crois)

  3. #3
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Citation Envoyé par Jung
    Bonjour

    La javadoc nous dit:

    Update the persistent instance with the identifier of the given detached instance. If there is a persistent instance with the same identifier, an exception is thrown. This operation cascades to associated instances if the association is mapped with cascade="save-update".
    Et dans mon code, si j'update un objet qui n'existe pas en base, aucune exception n'est levée Et il n'y a pas de valeur de retour indiquant le résultat de l'update.

    Les bras m'en tombent quelque peu...

    la javaDoc t'indique juste qu'il y aura une exception de levé si une instance avec le meme identifiant existe DEJA. Donc s'il n'en existe pas pas d'exception.

    Mais comme la si bien dit willoi, utilise saveOrUpdate.
    CEtte méthode fera le save si ton object n'existe pas. Ou Update s'il existe et que tu veux le modifier.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 442
    Par défaut
    Merci pour vos réponses mais je ne peux pas utiliser saveOrUpdate, j'ai besoin de les séparer clairement (contraintes fonctionnelles).

    Donc pas de solution à part une requête HQL...

  5. #5
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Citation Envoyé par Jung
    Merci pour vos réponses mais je ne peux pas utiliser saveOrUpdate, j'ai besoin de les séparer clairement (contraintes fonctionnelles).

    Donc pas de solution à part une requête HQL...
    Tu peux te definir une methode qui utilise save pour une creation et une methode qui utilise refresh et saveOrUpdate pour une modification et ainsi cela respectera tes contraintes fonctionnelles.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void save(TonBean bean) throrws HibernateException{
    session.save(bean);
    }
     
    public void edit(TonBean bean) throrws HibernateException{
    session.refresh(bean);
    session.saveorUpdate(bean);
    }

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Par défaut
    Citation Envoyé par Jung
    Merci pour vos réponses mais je ne peux pas utiliser saveOrUpdate, j'ai besoin de les séparer clairement (contraintes fonctionnelles).

    Donc pas de solution à part une requête HQL...
    Salut,
    Peux-tu nous dire quelles sont ces contraintes fonctionnelles ? Parce qu'à mon avis la méthode saveOrUpdate() ferait bien l'affaire, étant donné qu'elle ajoute ou met à jour selon que l'entité existe déjà ou pas. Tu as besoin d'une exception levée pour effectuer quelle sorte de traitement en cas d'erreur d'update ?

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 442
    Par défaut
    Citation Envoyé par manblaizo
    Peux-tu nous dire quelles sont ces contraintes fonctionnelles ? Parce qu'à mon avis la méthode saveOrUpdate() ferait bien l'affaire, étant donné qu'elle ajoute ou met à jour selon que l'entité existe déjà ou pas. Tu as besoin d'une exception levée pour effectuer quelle sorte de traitement en cas d'erreur d'update ?
    L'utilisateur a un écran avec les champs de la table éditables

    - il peut cliquer sur "create":
    • s'il n'a pas renseigné le champ de la clé primaire (seul champ not null) --> message d'erreur 1
    • si l'enregistrement existe déjà --> message d'erreur 2
    • sinon --> message de confirmation que la création a bien eu lieu

    - il peut cliquer sur "update":
    • s'il n'a pas renseigné le champ de la clé primaire (seul champ not null) --> message d'erreur 3
    • si l'enregistrement n'existe pas --> message d'erreur 4
    • sinon --> message de confirmation que l'update s'est bien passée


    Difficile de faire plus simple mais je suis débutant avec Hibernate

  8. #8
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Fait un get() sur la clé primaire ainsi tu verra s'il existe. S'il existe et qu'il fait à cliquer sur save alors tu leves une exception. Et si get ne renvoi rien et qu'il a cliquer sur update alors la aussi une exception.


    Pourquoi faire 2 message différent pour 2 cas identique (clé primaire non renseigné)?

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

Discussions similaires

  1. Comment savoir le résultat d'un requête
    Par janjannaj dans le forum Bases de données
    Réponses: 2
    Dernier message: 07/07/2010, 11h09
  2. Comment savoir si une requête retourne un résultat
    Par tomy29 dans le forum Hibernate
    Réponses: 2
    Dernier message: 06/11/2008, 10h18
  3. Réponses: 19
    Dernier message: 26/01/2005, 10h41
  4. Réponses: 9
    Dernier message: 11/03/2003, 12h22
  5. Réponses: 4
    Dernier message: 10/09/2002, 17h09

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