Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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_Oracle_Hibernate_Many To Many_Hibernate Mapping - Fatal编程技术网

Java hibernate中的多对多多态表

Java hibernate中的多对多多态表,java,oracle,hibernate,many-to-many,hibernate-mapping,Java,Oracle,Hibernate,Many To Many,Hibernate Mapping,我试图在hibernate中实现多对多多态关联 我有一个接口Animal和两个实现类Cat和Dog。我有另一个类Food,我希望通过数据库多对多关系将动物接口连接到Food类。我试图理解如何通过多态关联(如RubyonRails实现)来映射它 多对多关联应如下所示: ------------------------------------------------- | food_id | animal_type | animal_id | ----------------

我试图在hibernate中实现多对多多态关联

我有一个接口
Animal
和两个实现类
Cat
Dog
。我有另一个类Food,我希望通过数据库多对多关系将动物接口连接到Food类。我试图理解如何通过多态关联(如RubyonRails实现)来映射它

多对多关联应如下所示:

-------------------------------------------------
|   food_id   |   animal_type   |   animal_id   |
-------------------------------------------------

我已经做了一段时间了,我不知道如何在hibernate中实现它。

现在还不太清楚您希望数据库映射到模型的内容,但通常hibernate映射模型是真实的,所以我假设一种食物被许多动物吃,而动物吃很多食物。 在这种情况下,您需要在数据库FOOD_ANIMAL中创建一个链接表,其中包含FOOD_id和ANIMAL_id:

食用动物: 食物及动物识别号(11)

然后你需要一个列表或一组动物食物,反之亦然。使用@ManyToMany进行映射。关于如何做到这一点,有很多例子,例如:


如果没有代码示例,恐怕我帮不了什么忙,但我希望这能有所帮助

现在还不太清楚您希望数据库映射到模型的内容,但通常Hibernate映射会模拟现实,所以我假设一种食物被许多动物吃,而动物吃很多食物。 在这种情况下,您需要在数据库FOOD_ANIMAL中创建一个链接表,其中包含FOOD_id和ANIMAL_id:

食用动物: 食物及动物识别号(11)

然后你需要一个列表或一组动物食物,反之亦然。使用@ManyToMany进行映射。关于如何做到这一点,有很多例子,例如:


如果没有代码示例,恐怕我帮不了什么忙,但我希望这能有所帮助

那将是一个简单的多对多表。。。我在找更复杂的东西。。。由于animal是一个接口,因此动物没有唯一的id,相反,该特定动物类型的类名和id充当一个多键…您的接口不应为对象本身建模。您可以使用hibernate将动物表(包含唯一ID)映射到使用@table的Java模型,标准是将您的接口用作使用hibernate更新数据库的数据访问对象。我建议在你的情况下使用标准模式,因为这是一种简单的m-to-m关系。你解决方案的问题是,如果我明天决定创建一个宠物界面,在那里我放置猫、狗和石头(这不是动物界面),它们所有的动物和宠物都必须共享一个id序列。。。后来,当我决定添加另一个名为Thing的接口时,我有Rock、电梯和Motorcycle,它们也必须在相同的id序列下,因为狗必须和Rock具有相同的id序列,Rock必须和Motorcycle具有相同的id序列。。。我们可以添加更多的例子。问题是具体的,我怎样才能创建那种类型的多边形关联…那将是一个简单的多对多表。。。我在找更复杂的东西。。。由于animal是一个接口,因此动物没有唯一的id,相反,该特定动物类型的类名和id充当一个多键…您的接口不应为对象本身建模。您可以使用hibernate将动物表(包含唯一ID)映射到使用@table的Java模型,标准是将您的接口用作使用hibernate更新数据库的数据访问对象。我建议在你的情况下使用标准模式,因为这是一种简单的m-to-m关系。你解决方案的问题是,如果我明天决定创建一个宠物界面,在那里我放置猫、狗和石头(这不是动物界面),它们所有的动物和宠物都必须共享一个id序列。。。后来,当我决定添加另一个名为Thing的接口时,我有Rock、电梯和Motorcycle,它们也必须在相同的id序列下,因为狗必须和Rock具有相同的id序列,Rock必须和Motorcycle具有相同的id序列。。。我们可以添加更多的例子。问题是具体的,我如何才能创建这种类型的多边形关联。。。