我的数据库中有2个现有表。 我们暂时将它们称为表和主席。 这两个表都映射为Hibernate中的实体
这些表现在已存在于我的数据库中一段时间了,并且它们有自己生成的,自动生成的ID作为主键。
现在,我想在我的Java代码中将这些实体分组在非常合理的 Furniture 接口下,这样我就可以在 House 类中创建一个List。
我已经研究过Hibernate继承,但似乎没有弄明白。 如何让我的 House 课程列出其拥有的所有家具?我应该使用哪种继承映射策略?
谢谢, 巴特
答案 0 :(得分:1)
你走在正确的轨道上。如果您创建Furniture接口或基类,并且具有Table和Chair实现/扩展该类型,那么您应该很高兴。然后你可以有一个
List<Furniture>
为你的房子。
如果要实现hibernate文档中概述的任何多态映射策略,则需要修改映射的唯一情况。一些选项是
创建一个Furniture表,并在该表中包含所有Chairs / Tables(每个类层次结构一个表)。你不必这样做。在这种情况下,您的表将具有两个类的所有属性,因此根据要保留的类型,不会使用所有列。会有一个'discriminator'列,所以hibernate可以告诉行的类型。
您想创建一个Furniture表,并重构/规范化您的Table / Chair表,以便将所有常用字段拉入Furniture表。你保留桌子和椅子表。这是另一种多态映射(检查文档)
hibernate docs中的其他选项。
我认为选项1是hibernate文档中的首选策略。
但是要了解它,您不必执行任何操作 - 如果您愿意在表中包含重复的列,则您的实体可以从其他类型扩展/继承而无需任何特殊的映射注意事项。
我会写一些简单的JUnit或其他任何测试并试一试。