Hibernate映射继承

Hibernate映射继承,hibernate,inheritance,mapping,entity,Hibernate,Inheritance,Mapping,Entity,我有一个类ClassA映射到TableA。我还有一个映射,它有一个实体名EntityA 现在,我需要在ClassA和TableA之间创建另一个名为EntityATwo的映射,但略有不同 虽然我可以复制粘贴EntityA到EntityATwo的映射,但是维护它是非常困难的 因此,我的问题是,如何为EntityATwo创建映射,其中我只声明EntityATwo和EntityA之间的不同之处,而其余映射都是从EntityA派生的 谢谢, 弗兰兹我不知道如何直接做到这一点。但如果你允许,我可以详细说明

我有一个类ClassA映射到TableA。我还有一个映射,它有一个实体名EntityA

现在,我需要在ClassA和TableA之间创建另一个名为EntityATwo的映射,但略有不同

虽然我可以复制粘贴EntityA到EntityATwo的映射,但是维护它是非常困难的

因此,我的问题是,如何为EntityATwo创建映射,其中我只声明EntityATwo和EntityA之间的不同之处,而其余映射都是从EntityA派生的

谢谢,
弗兰兹

我不知道如何直接做到这一点。但如果你允许,我可以详细说明


在我们的代码中,我们通常希望一个java类映射到一个语义(我们更喜欢使用编译检查的类而不是未检查的字符串)。因此,我们将映射两个类,而不是将两个类映射到具有不同实体名称的表。 我们会:

  • ClassA作为公共超类,具有大多数公共映射。它是用所有这些映射声明的(在hbm.xml中)
  • ClassA1扩展了ClassA,提供了它唯一的映射(如果需要,还提供java代码,否则它可能是空的)。它继承了ClassA的公共映射
  • 类别A2也包括在内
你不再有复制品了。你在语义学方面也有所收获



另一种可能是在java类上使用注释,仅用于公共映射。在Hibernate中,xml映射可以覆盖(或完成)注释。因此,我想您可以只覆盖xml中的相关部分,这样就不会有重复。

我不知道直接这样做的方法。但如果你允许,我可以详细说明


在我们的代码中,我们通常希望一个java类映射到一个语义(我们更喜欢使用编译检查的类而不是未检查的字符串)。因此,我们将映射两个类,而不是将两个类映射到具有不同实体名称的表。 我们会:

  • ClassA作为公共超类,具有大多数公共映射。它是用所有这些映射声明的(在hbm.xml中)
  • ClassA1扩展了ClassA,提供了它唯一的映射(如果需要,还提供java代码,否则它可能是空的)。它继承了ClassA的公共映射
  • 类别A2也包括在内
你不再有复制品了。你在语义学方面也有所收获



另一种可能是在java类上使用注释,仅用于公共映射。在Hibernate中,xml映射可以覆盖(或完成)注释。因此,我想您可以只覆盖xml中的相关部分,这样就不会有重复。

请随意详细说明:-)我想我可以将两个类映射到同一个表。但是,我怎么说两张地图上的实体实际上与一张地图上的实体相同,只是有一些细微的差别呢。Thanks@Franz我编辑以关注你的评论。更清楚吗?Hibernate站点关闭了,所以我无法提供链接。好的,那么ClassA1和ClassA2都从java端扩展了ClassA。ClassA映射到TableA(例如)。此外,ClassA1和ClassA2映射到表A。但是,如何确切地指定ClassA1和ClassA2从ClassA继承公共映射呢?谢谢,我相信Hibernate已经明白这一点了。由于类(声明为Hibernate的类)中的继承性,它应该理解这一点。我经常使用注释技术(顺便说一句,如果可以的话,我建议使用注释技术),但我相信xml也应该如此。两个映射都转换为相同的元数据。(注意:我们在一些带有注释的实体和其他xml实体之间使用双面引用,效果很好!)。请随意详细说明:-)我想我可以将两个类映射到同一个表。但是,我怎么说两张地图上的实体实际上与一张地图上的实体相同,只是有一些细微的差别呢。Thanks@Franz我编辑以关注你的评论。更清楚吗?Hibernate站点关闭了,所以我无法提供链接。好的,那么ClassA1和ClassA2都从java端扩展了ClassA。ClassA映射到TableA(例如)。此外,ClassA1和ClassA2映射到表A。但是,如何确切地指定ClassA1和ClassA2从ClassA继承公共映射呢?谢谢,我相信Hibernate已经明白这一点了。由于类(声明为Hibernate的类)中的继承性,它应该理解这一点。我经常使用注释技术(顺便说一句,如果可以的话,我建议使用注释技术),但我相信xml也应该如此。两个映射都转换为相同的元数据。(注意:我们在一些带有注释的实体和xml中的其他实体之间使用双面引用,效果很好!)。+1表示精确的问题,良好的交互+1表示精确的问题,良好的交互