2013-05-01 165 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