-->
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.  [ 1 post ] 
Author Message
 Post subject: @oneToMany,@manyToOne,Repeated column in mapping for entity
PostPosted: Fri Jun 06, 2008 4:11 am 
Newbie

Joined: Fri May 30, 2008 9:05 am
Posts: 18
Bonjour à tous.

Je fais ce post car je n'arrive pas à avoir les idées claires sur un point particulier. J'ai déjà fais ce post sur la version anglophone du forum, mais j'ai du mal m'exprimer, d'ailleurs même en Français ça n'est pas évident.

Supposons que l'on aie 2 tables A et B avec 1 relation oneToMany de A vers B. Et supposons que la colonne 'a' de 'B' référence la clef primaire de 'A'.

Tout d'abord, le paramètre mappedBy est il nécessaire avec l'annotation @oneToMany?
Je suppose qu'il n'est pas nécessaire d'utiliser mappedBy lorsque la table B n'a qu'une seule colonne permettant de référencer A vu que dans ce cas hibernate pourra deviner quelle est la colonne concernée mais je voudrais confirmation.

Ensuite, si la valeur de mappedBy est le nom de la colonne de jointure dans B (mappedBy="a"), cela implique aussi qu'il va falloir mettre l'attribut 'a' dans la table B, sinon on aura un message disant que l'attribut n'a pas été trouvé. Et dans ce cas, dans la table B, on va avoir deux attributs qui vont être mappés par la colonne 'a', l'attribut lié à @manyToOne et id_person, ce qui créé une erreur "Repeated column in mapping for entity", à moins que l'on rajoute les paramètres insertable=false et updatable=false...

Encore une chose, si on utilise mappedBy dans A, pourquoi est il nécessaire d'utiliser joinColumn dans B, j'ai l'impression que c'est de la redondance d'info, non.

Bon voilà, il y a surement des erreurs dans ce que j'ai dit, et c'est justement pour ça que je le dis, pouvez vous me corriger SVP?

Et d'autre part, je trouve cette histoire de "Repeated column in mapping ..." très très bizarre. On m'explique qu'il y a 2 mappings pour la même colonne, mais je ne vois pas le rapport, pour moi il n'y a qu'un mapping:

exemple:
Code:
| table Personne |   
| id    |  name    |     

|      table Adresse              |
| id | id_personne | address |
ou Adresse.id_personne reference Person.id


Si mon entité Adresse contient

Code:
Addresse{
private Long id;
private Long id_personne;
@ManyToOne
@JoinColumn(name="id_personne")
private Personne personne;
private String address;

...

}


Voilà, les 2 attributs mappés par la colonne id_personne sont id_personne et personne. Ok, pour id_personne, la c'est évident c'est une correspondance directe entre l'attribut et la colonne. Pas ok pour personne. Dire que hibernate utilise la colonne id_person pour retrouver la personne liée à une adresse n'a rien à voir selon moi avec une quelconque histoire de mapping!!! En tout cas quand j'imagine comment cela peut fonctionner en interne, ca me parait poser aucun problème.

Voilà, j'aimerais avoir les idées plus claires sur tous ces sujets là, cela me permettra peut être de ne pas créer un nouveau post pour une erreur sql sur une requête que je n'ai pas écrite, mais que hibernate semble créer en se basant sur les annotations (table not found!!!).


Merci d'avance.


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

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.