-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 7 posts ] 
Author Message
 Post subject: Modifier un enregistrement : probléme clef etrangére
PostPosted: Mon Mar 10, 2008 2:16 pm 
Newbie

Joined: Mon Mar 10, 2008 2:00 pm
Posts: 10
Hibernate version: 3.0

Name and version of the database you are using: SQL SERVER 2000


Bonjour,

Je débute avec hibernate sous eclipse,
J'ai dans ma base de données une table <SALARIE> (avec différentes informations) qui est liée avec une table <PROFIL> selon le mapping suivant :

<many-to-one
name="IdProfil"
column="idProfil"
class="Profil"
not-null="false"
>


je cherche à modifier un enregistrement. Pour cela j'effectue le code suivant :

session.update(monSalarie);

Donc cela fonctionne correctement pour tout les champs de ma table sauf pour le profil de mon salarie...

Est ce que quelqu'un aurait une idée SVP?

Merci pour tout aide.


Top
 Profile  
 
 Post subject:
PostPosted: Mon Mar 10, 2008 4:42 pm 
Regular
Regular

Joined: Mon Apr 19, 2004 6:54 pm
Posts: 79
il faut sans doute ajouter cascade="all" dans ton mapping many-to-one

Christophe


Top
 Profile  
 
 Post subject:
PostPosted: Mon Mar 10, 2008 5:40 pm 
Newbie

Joined: Mon Mar 10, 2008 2:00 pm
Posts: 10
Merci pour ton aide!

Je vais essayer ça demain et je te tiens au courant!

Bonne soirée


Top
 Profile  
 
 Post subject:
PostPosted: Tue Mar 11, 2008 4:24 am 
Newbie

Joined: Mon Mar 10, 2008 2:00 pm
Posts: 10
Bonjour,

je viens d'essayer en mettant dans mon mapping cascade="all", c'est peut être la solution mais a vrai dire, je pense que mon souci principal et que je ne sais pas comment affecter l'id du PROFIL souhaité...

Je récupère l'id d'une liste déroulante sous forme de String, alors après je pensais avoir simplement avoir à faire l'écriture suivante :

sal.setIdProfil()(Integer.parseInt(idProfil));

Sauf que la fonction n'est pas setIdProfil(Integer idProfil) mais setIdProfil(Profil idProfil)...

Y a t il un truc que j'ai pas compris?

Merci pour tout aide


Top
 Profile  
 
 Post subject:
PostPosted: Tue Mar 11, 2008 4:53 am 
Newbie

Joined: Mon Mar 10, 2008 2:00 pm
Posts: 10
Comme je dois avancé...
Je fais la manipulation suivante qui je trouve est assez lourde:

(Mon paramètre est idProfil qui l'id que je récupère de ma liste de profil)

uneRequete = session.createQuery("From Profil where Id=?");
uneRequete.setString(0, idProfil);
Profil p = (Profil) uneRequete.uniqueResult();
sal.setIdProfil(p);
session.update(sal);

Et donc la ça marche, sachant qu'au préalable j'ai ajouté toutes les autres informations liées au salarié qui ont été modifiées.

Voila si quelqu'un à une autre solution ça m'arrangerai car cela signifie que je dois faire la même manipulation pour toute les liaisons de ma base...

si quelqu'un a une idée?


Top
 Profile  
 
 Post subject:
PostPosted: Tue Mar 11, 2008 6:05 am 
Beginner
Beginner

Joined: Thu Jan 31, 2008 6:35 am
Posts: 27
Ton erreur est de trop penser base de données et pas objet.

Dans ton objet salarié, ce n'est pas l'id du profile qui t'intéresse mais le profile.

il faut donc avoir :
<many-to-one
name="profil"
column="idProfil"
class="Profil"
not-null="false"
>



Apres hibernate te permet de faire ce lien avec une foreign key de façon transparente.

Donc ta dernière solution est bonne mais sans parler d'id de profile.

Une solution plus simple :
Profile p = (Profil) session.get(Profil.class, idProfil);
sal.setProfil(p);
session.update(sal);


Top
 Profile  
 
 Post subject:
PostPosted: Tue Mar 11, 2008 6:29 am 
Newbie

Joined: Mon Mar 10, 2008 2:00 pm
Posts: 10
En effet, ton explication me semble plus logique. Je pense qu'il faut que je me penche un peu plus sur le mapping, j'ai utilisé le plugin hibernate synchronizer sur eclipse et c'est lui qui m'a géré le mapping...

Donc j'ai modifié comme indiqué dans ton poste et ça marche très bien donc je pense que je risque d'avoir le même problème par la suite sur mes autres tables...

En tout cas merci pour ton aide!!


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 7 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.