2010-08-06 9 views
2

J'essaie de mapper ma Hashmap dans Hibernate. Tous les exemples que je peux trouver sont tout simplement comme ceci:Mapping Map <String,Foo> dans Hibernate

class FooBar{ 
    Map<String,String> myStrings; 
} 

Ce qui serait tout simplement la carte à

<map role="ages"> 
<key column="id"/> 
<index column="name" type="string"/> 
<element column="age" type="string"/> 
</map> 

Cependant, j'utilise une approche plus orientée objet dans mon code Java. Un peu comme le suivant:

class Bar{ 
    private Map<String, Foo> myFoos; 
} 

Comment est-ce que je ferais cela pour cartographier cela? Comme la relation? De sinon défini: Comment puis-je mapper un un-à-plusieurs dans une carte?

Merci, Bart

+0

plusieurs-à-plusieurs avec une 'Map' est contradictoire. Une «Carte» mappe une clé pour exactement un élément. Donc c'est un-à-plusieurs. A part ça: je ne connais pas les spécificités d'Hibernate mais JPA a '@ MapKey'. – musiKk

+0

Oups, je voulais dire un-à-plusieurs. Je l'ai édité dans le message original. Merci pour la remarque –

Répondre

2

Il y a quelques exemples dans le Hibernate reference manual chapter on Collection Mapping. Vous voulez faire quelque chose comme

<map name="foos"> 
    <key column="id"/> 
    <index column="name" type="string"/> 
    <one-to-many class="Foo"/> 
</map> 

La différence est <one-to-many class="Foo"/> - ce tracera la relation à l'aide d'une colonne de clé étrangère à l'ID de la table Foo dans la table parent (à savoir l'objet qui a la carte de foos).

Il existe plusieurs autres variantes et variantes de la façon dont vous pouvez mapper cela en fonction du type de relation que vous souhaitez, voir le manuel pour plus d'exemples.