Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate集合有多种类型_Java_Hibernate_Orm - Fatal编程技术网

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接口案例的答案。啊,我明白了,我忽略了支付是一个接口的事实(也忽略了“注释接口当前不受支持”位)。非常感谢。