2013-05-01 236 views
0

我是hibernate的新手,我需要將現有的類結構映射到數據庫。 現在我有一個球員,阿森納和武器類。每個球員都有他自己的(一個)阿森納 - 沒問題。在阿森納有一個HashMap包含一個武器ID和這個武器的數量。例如(ID = 10是霰彈槍,左邊有7輪彈藥)。 爲了使它更復雜我有更多的這種地圖用不同風格的武器:Hibernate HashMap映射

@Entity 
class Arsenal 
{ 
    @Id 
    @GeneratedValue 
    int arsenalID; 

    //weaponID - how many 
    HashMap<Integer, Integer> explosiveWeapons; 
    HashMap<Integer, Integer> rifleWeapons; 
    HashMap<Integer, Integer> someOtherTypeOfWeapons; 
} 

我將如何映射類似的東西在休眠4註解?

其次: 是更好地有一個表阿森納:

arsenalID | weaponID | amount 

或者更好更多的表是這樣的:

arsenalID | explosiveWeaponID | rifleWeaponID | ... 

,然後用ID /量每weaponType一個表?

我不希望更改類/代碼到很多/所有,但如果有更好的方法來存檔,我很感激的建議。

回答

1

看起來你的Hashmaps包含的條目最好用Hibernate註釋@ManyToMany作爲@JoinTable映射。

基本上,你想要的是像這樣的表:

CREATE TABLE arsenal_entry { 
    ... --Id here, or you could use a synthetic key, but if you're new to hibernate I wouldn't recommend that. 
    player_id integer references player, 
    weapon_id integer references weapon, --If weapons aren't defined in an enum, otherwise this should be a varchar/text 
    count integer 
} 

有一個相當不錯的描述多到許多具有很好的例子here