5

Je dois mapper une seule classe à deux tables (les deux avec une clé primaire à colonnes multiples). Disons que TABLE1 a id1, id2, id3 et TABLE2 a id1, id2 comme clés primaires. Maintenant, lors de l'écriture du fichier de mappage je ferais quelque chose comme ce qui suit:Comment joindre sur deux colonnes dans le fichier de mappage d'hibernation à l'aide de la balise <join>?

<hibernate-mapping package="beans"> 
    <class name="TABLE1Class" table="TABLE1"> 
    <composite-id name="table1PK" class="TABLE1PKClass"> 
     <key-many-to-one name="id1" class="ID1Class" column="id1"/> 
     <key-many-to-one name="id2" class="ID2Class" column="id2"/> 
     <key-many-to-one name="id3" class="ID3Class" column="id3"/> 
    </composite-id> 
    <property name="someProperty" type="integer" not-null="true" column="x"/> 
    <join table="TABLE2"> 
     <key column="id1" /> 
     <!-- <key column="id2"/> The join tag accepts only one key tag!!! 
How do I map the second key??? --> 
     <property name="propertyFromTable2" type="float" not-null="true"/> 
    </join> 
    </class> 
</hibernate-mapping> 

Comme vous pouvez le voir la jointure tag accepte une seule porte-clés! Comment mapper le second identifiant?

Cordialement,
Despot
PS: Joyeux Noël et une heureuse et productive Nouvel An;)

Répondre

2

<key> peut contenir plusieurs <column> éléments:

<key> 
    <column name = "id1" /> 
    <column name = "id2" /> 
    <column name = "id3" /> 
</key> 
+1

Salut axtavt, je suivais vos instructions et ceci a résolu le problème avec la multiplicité, mais une autre exception s'est produite puisque j'ai deux ids dans TABLE2 (id1, id2): "org.hibernate.MappingException: Clé étrangère (FK: TABLE2 [id1, id2])) doit avoir le même numbe r de colonnes en tant que clé primaire référencée (TABLE1 [id3]) ". – despot

+1

J'ai essayé de fournir une colonne fictive comme décrit ici https://forum.hibernate.org/viewtopic.php?p=2229088&sid=a709d63dc318557b72b76366b8d7b804 (), mais j'ai: "org.hibernate.MappingException: Clé étrangère (FK: TABLE2 [id1, id2, id3])) doit avoir le même nombre de colonnes que la clé primaire référencée (TABLE1 [id3])". Toute suggestion? – despot

+0

@despot Bonjour, ça fait longtemps, avez-vous résolu ce problème? Si oui, pouvez-vous s'il vous plaît dire comment? Avoir juste le même problème maintenant :) –

Questions connexes