2009-08-21 8 views
1

Comment faire si j'ai deux tables et que leurs clés primaires ont le même nom que le fichier de mappage XML suivant?plusieurs vers plusieurs identiques PK

<class name="Person" table="person"> 

    <id name="uid_" type="java.lang.String" column="uid"> 
     <generator class="native" /> 
    </id> 

    <property name="name_" type="java.lang.String" column="pName" /> 
    <property name="age_" type="integer" column="age" /> 
    <property name="birthday_" type="date" column="birthday"/> 

    <many-to-one name="school" class="School" column="schoolID" unique="false" /> 

    <bag name="course"> 
     <key column="uid" /> 
     <many-to-many class="Course" column="uid" /> 
    </bag> 

    </class> 

La clé primaire de la personne et du cours est nommée "uid". L'hibernation dit "Colonne répétée dans la cartographie".

+0

Où est la définition de Personne? – DarkSquid

Répondre

2

Modifiez le nom donné à la colonne dans la relation plusieurs à plusieurs.

<bag name="course"> 
     <key column="uid" /> 
     <many-to-many class="Course" column="course_uid" /> 
</bag> 

La colonne dans le mappage de relation n'est pas un identifiant de la colonne du cours, il est juste le nom à utiliser dans la table de relation.

+0

Voulez-vous dire de changer le PK du cours en cours? – Sefler

+0

non, laissez le PK du cours le même. Changez simplement le nom de colonne utilisé dans la relation plusieurs-à-plusieurs. Hibernate fera entrer l'UID du cours dans la colonne portant ce nom dans la table de relations, tout en le reliant automatiquement à la colonne uid de la table de cours. – Zoidberg

0

Vous pouvez mapper votre many-to-many cartographie comme un élément composite comme suit

Au lieu de

<bag name="course"> 
    <key column="uid"/> 
    <many-to-many class="Course" column="course_uid"/> 
</bag> 

Essayez

<bag name="course"> 
    <key column="uid"/> 
    <composite-element class="Course"> 
     // define properties here 
    </composite-element> 
</bag> 

Il fonctionne indépendamment du fichier de mappage du cours

Questions connexes