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 ne fonctionne pas


Sujet :

Hibernate Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 135
    Points : 81
    Points
    81
    Par défaut Update ne fonctionne pas
    Bonjour à tous,

    J'ai une table "shares" et une tables "Sharesgroups" dans ma base de données mysql, un share peut etre dans au minimum 0 share group et au maximum 1 fois (0,1), alors qu'un share group contient au minimum 0 share et au maximum une multitude de shares (0,n).

    Le format de mes tables sont donc :


    create table SHARES
    (
    ID_SHARE int not null auto_increment,
    ID_SHARE_GROUP int default null,
    primary key (ID_SHARE)
    );

    create table SHARESGROUPS
    (
    ID_SHARE_GROUP int not null auto_increment,
    primary key (ID_SHARE_GROUP)
    );

    alter table SHARES
    add constraint FK_GROUP_CONTAINS foreign key (ID_SHARE_GROUP) references SHARESGROUPS (ID_SHARE_GROUP)
    on delete cascade on update cascade;
    Et voici les fichiers de mapping correspondant :


    Pour la classe Sharesgroups :

    <hibernate-mapping package="org.nasr.database">
    <class
    name="Sharesgroups"
    table="sharesgroups"
    >
    <meta attribute="sync-DAO">false</meta>
    <id
    name="Id"
    type="integer"
    column="ID_SHARE_GROUP"
    >
    <generator class="increment"/>
    </id>
    <set name="Shares" inverse="true">
    <key column="ID_SHARE_GROUP"/>
    <one-to-many class="Shares"/>
    </set>
    </class>
    </hibernate-mapping>

    # Pour la classe Shares :

    <hibernate-mapping package="org.nasr.database">
    <class
    name="Shares"
    table="shares">
    <meta attribute="sync-DAO">false</meta>
    <id
    name="Id"
    type="integer"
    column="ID_SHARE"
    >
    <generator class="increment"/>
    </id>
    <many-to-one
    name="IdShareGroup"
    column="ID_SHARE_GROUP"
    class="Sharesgroups"
    not-null="false"
    >
    </many-to-one>
    </class>
    </hibernate-mapping>
    J'aimerai ajouter des shares au share group de cette facon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    Sharesgroups	shareGrp = (Sharesgroups)hibSession.load(Sharesgroups.class, idShareGrp);
     
    Set<Shares>	s_share	= new HashSet<Shares>();
     
    Shares              share = (Shares)hibSession.load(Shares.class, Integer.parseInt(IdShare);
     
    s_share.add(share);
     
    shareGrp.setShares(s_share);
     
    hibSession.update(shareGrp);
    Mais l'update ne procède à aucun delete/update...

    Je ne comprends pas car j'ai le meme exemple avec 2 tables liés en many-to-many, donc 3 tables, une pour un "Utilisateur", une autre pour un "groupeutilisateur" et la dernière "Userlinkgroup" reprenant en clés primaires étrangères les clés de "Utilisateur "et "groupeutilisateur".

    Pour ce dernier exemple je peux faire un :

    groupeutilisateur.setUtilisateur(null) et hibernate va me vider la table userlinkgroups pour ce groupe d'utilisateur...

    J'aimerai faire la meme chose pour mon sharegroup, seulement il ne procède à aucun delete update, alors je me disais que ca venait peut etre du fait qu'il n'y est pas de table de jointure, mais ca m'embete un peu de créer une table de jointure juste pour hibernate.

    Deplus mes fichiers de mapping on été généré avec hibernate synchronizer alors je ne comprends pas pourquoi la méthode "setShares" me serait proposé dans ma classe Sharesgroups si hibernate ne gère pas ca SANS table de jointure externe...

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Points : 545
    Points
    545
    Par défaut cascading save-update ou all
    si tu veux que tes objets soient sauvegardes ils faux que tu ajoutes l option de cascading qui va bien (all, save-update ...) dans le fichier de conf xml (mapping)

    si tu fais a.set(b) et saveOrUpdate(a), il ne sauvera la table b que si le cascading est actif. sinon seul a sera sauve ;-)

Discussions similaires

  1. [MySQL] Update ne fonctionnant pas à la première exécution
    Par isa150183 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 10/11/2006, 18h25
  2. Chaîne SQL update ne fonctionne pas (faut-il l'imbriquer ?"
    Par beegees dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/10/2006, 11h22
  3. UPDATE ne fonctionne pas ?
    Par crocodile dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 18/07/2006, 16h50
  4. Requete UPDATE ne fonctionnant pas
    Par Yanmeunier dans le forum Access
    Réponses: 3
    Dernier message: 12/04/2006, 17h19
  5. Microsoft Update ne fonctionne pas sous Win 2000 SP4
    Par botakelymg dans le forum Windows Serveur
    Réponses: 3
    Dernier message: 03/10/2005, 05h32

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