我有一个类Player
,它包含一个Accessory
对象的列表。有两种配件。 SocketedAccessories有一个SocketJewels列表,MagicAccessories有一个MagicEnchantments列表。Hibernate集合多种类型
在数据库级别,有一个表示播放器的players
表和一个包含附件列表的accessories
表。附件中有一个类型字段,用于指示它们是插入式还是魔术式,而仅由一种类型使用的列仅由其他类型的条目留空。有socket_jewels
和magic_enchantments
表,表示每个配件上的插槽宝石或魔法附魔。
我想找出正确的方法来映射这与休眠。一种方法是让玩家有两个配件清单,一个用于SocketedAccessories和一个用于MagicAccessories。尽管如此,这似乎是不可取的。我想要的是一种方式来指定该玩家应该有一个字段List<Accessory> accessories
,其中包含两种类型的东西。
有没有办法在hbm.xml或注释中告诉Hibernate来做到这一点?
这是个好消息!虽然,如果我想拥有它们的列表,它看起来像“附件”必须是基类,而不是接口? – 2010-04-14 21:45:22
@CaptainAwesomePants配件可以是一个接口。但是你可能必须使用hbm。 hibernate核心文档实际上明确提到你可以使用接口。我将添加一个链接到另一个涵盖与JPA接口的案例。 – 2010-04-14 22:17:48
啊,我明白了,我错过了Payment是一个接口这一事实(并且也错过了“当前不支持注释接口”一点)。谢谢! – 2010-04-14 22:40:55