2010-08-06 110 views
2

我想映射我的Hashmap在休眠。 所有的例子我能找到的僅僅是這樣的:映射映射<String,Foo>在休眠

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

這會簡單地映射到

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

不過,我使用的是更面向對象的方法在我的Java代碼。有點像下面這樣:

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

我該怎麼去做這個映射?作爲關係店? 另有定義:如何在Map中映射一對多?

感謝, 巴特

+0

帶有「Map」的多對多是矛盾的。一個Map將一個鍵映射到一個元素。所以它是一對多的。除此之外:我不知道任何Hibernate細節,但JPA有'@ MapKey'。 – musiKk 2010-08-06 11:43:43

+0

糟糕,我的意思是一對多。我在原始文章中編輯它。謝謝你的評論 – 2010-08-06 11:58:13

回答

2

有在Hibernate reference manual chapter on Collection Mapping的幾個例子。你會想要做這樣的事情

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

不同的是<one-to-many class="Foo"/> - 這將通過使用外鍵列在父表中Foo表的ID(關係圖即有地圖的對象FOOS)。

根據您想要的關係類型,還有幾種不同的風味和變體,請參閱手冊瞭解更多示例。