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 :

[Débutant] Clé primaire - Update


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Par défaut [Débutant] Clé primaire - Update
    Bonjour à tous,

    J'ai un petit souci concernant la mise à jour d'enregistrements par hibernate :


    J'ai une table parc, avec une clé primaire "parc", et un champ libellé quelconque.
    Elle est mappée comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <hibernate-mapping>
        <class name="ft.webroutage.metier.Parc" table="PARC">
            <id name="parc" type="string">
                <column name="PARC" length="5" />
                <generator class="assigned" />
            </id>
            <property name="libelle" type="string">
                <column name="LIBELLE" length="50" />
            </property>
    <hibernate-mapping>

    Une petite précision : le champ parc est utilisé dans d'autres tables comme foreign key.
    L'ennui, c'est que lorsque j'essaie de mettre à jour un enregistrement en changeant le champ "parc", il ne fait pas d'update, mais un nouvel insert, en conservant l'enregistrement précédent.
    Exemple : j'ai dans ma table le couple PARC1/toto
    Je veux changer (et non pas dupliquer) le parc1 en parc2. (le parc1 n'est utilis" dans aucune autre table)
    Si je fais un saveOrUpdate de mon objet, j'obtiens en base deux enregistrements :
    PARC1/toto
    PARC2/toto
    Si je fais un simple update, j'obtiens :
    PARC1/toto (rien de modifié)
    Et par un save, j'obtiens la même chose qu'avec le saveOrUpdate.

    Je suppose que cela vient du fait qu'hibernate fasse un select sur la table avce la clé primaire avant de persister, et que ce problème doit être facile à contourner, et que ma question va vous sembler complètement idiote

    Mais je débute, et je ne sais pas si cela vient du mapping (oubli de quelque chose?) ou d'autre chose

    Sauriez-vous m'éclairer?


    Merci par avance

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 277
    Par défaut
    C'est un peu normal qu'il t'empeche de faire un update sur une clef primaire.
    Donc le mieux, c'est de supprimer l'enregristrement et d'en créer un nouveau.

  3. #3
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Par défaut
    Oui, je comprends bien que ça soit normal.
    Mais comme c'est possible de le faire en direct (si je tape update parc set parc2 where parc='parc1'), je voulais savoir s'il n'y avait pas moyen de le faire via hibernate

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 277
    Par défaut
    Ton champ est déclaré en tant que clef primaire dans ta table ?

    EDIT:
    Effectivement, la bd tolère ce genre de choses, je ne le savais pas.

  5. #5
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Par défaut
    Oui, mon champ est déclaré en temps que clé primaire dans ma table.
    J'en ai aussi besoin comme foreign key ailleurs.

    J'ai regardé un peu dans la doc, mais je n'ai pas encore trouvé l'astuce

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 277
    Par défaut
    Tu peux pas faire autrement ?
    C'est quand même crade comme méthode, non ?
    Surtout que si ta clef est utilisée en tant que clef etrangère, tu vas être obligé de mettre à jour les liens. Si ton appli se complique, tu risques d'avoir des ennuis.

Discussions similaires

  1. débutant / insert or update
    Par markusgalileo dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 02/04/2008, 10h14
  2. [access 2003][débutante] problème avec update
    Par Milyshyn76 dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 04/01/2008, 16h48
  3. [Débutant] Problème requête Update
    Par aure298 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 02/01/2008, 16h54
  4. [débutante] Clé Primaire en SQL-Server
    Par manel007 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/02/2005, 18h42
  5. [Débutant][PS] modifier un insert en update
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 19/05/2004, 16h33

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