Java Hibernate集合有多种类型
我有一个类Java Hibernate集合有多种类型,java,hibernate,orm,Java,Hibernate,Orm,我有一个类Player,它包含附件对象的列表。有两种配件。SocketedAccessories有一个SocketJewels列表,MagicAccessories有一个Magicienchants列表 在数据库级别,有一个代表玩家的players表和一个包含附件列表的associates表。附件有一个类型字段,指示它们是镶嵌的还是魔法的,只有一种类型使用的列被另一种类型的条目留空。有socket_珠宝和magic_附魔表,代表每个配件上的socket珠宝或magic附魔 我正试图找出正确的方法
Player
,它包含附件
对象的列表。有两种配件。SocketedAccessories有一个SocketJewels列表,MagicAccessories有一个Magicienchants列表
在数据库级别,有一个代表玩家的players
表和一个包含附件列表的associates
表。附件有一个类型字段,指示它们是镶嵌的还是魔法的,只有一种类型使用的列被另一种类型的条目留空。有socket_珠宝
和magic_附魔
表,代表每个配件上的socket珠宝或magic附魔
我正试图找出正确的方法来用Hibernate映射它。一种方法是让玩家有两个配件清单,一个是袜子配件,一个是魔法配件。不过,这似乎并不可取。我想要的是一种方法来指定播放器应该有一个字段列出附件
,其中包含这两种类型的内容
有没有一种方法可以告诉Hibernate使用hbm.xml或注释来执行此操作
有没有一种方法可以告诉Hibernate使用hbm.xml或注释来执行此操作
您所描述的看起来像是一个单表/类层次结构策略(所有超类和子类的所有属性都映射到同一个表中,实例通过一个特殊的鉴别器列进行区分)
您可以将其映射为和/或(并且有一个列表
,Hibernate支持多态查询,即您可以查询附件
超类并获得子类列表)
更新:如果附件是一个界面,请查看。这是个好消息!尽管如此,如果我想要一个附件列表,看起来“附件”必须是基类而不是接口?@CaptainAwesomePants附件可以是接口。但是你可能必须使用hbm。hibernate核心文档实际上明确提到可以使用接口。我将添加一个链接,指向另一个涉及JPA接口案例的答案。啊,我明白了,我忽略了支付是一个接口的事实(也忽略了“注释接口当前不受支持”位)。非常感谢。