如果你不能修改de父类,如何在hibernate中定义继承类型

时间:2012-05-14 14:37:24

标签: hibernate inheritance jpa

问题在于,我正在扩展一个通用框架并将其应用于特定的项目,该框架适用于Spring和Hibernate,这里我有两个类, GenericClient SpecificClient ,它们都是实体, SpecificClient 继承自 GenericClient

GenericClient 是框架的一部分,我不能修改它,因为这个类没有声明@Inheritance(strategy = InheritanceType.JOINED)唯一可以使用的继承类型是{{1因为这是注释的默认值。

目前我的代码正在使用 SpecificClient 中声明的InheritanceType.SINGLE_TABLE,即使它不是继承树的根。

由于版本问题,我必须找到使用@Inheritance(strategy = InheritanceType.SINGLE_TABLE)的方法,好处是 SpecificClient 将始终是继承树的最后一个类,但可以是不同的不同的项目。

  • 有什么办法可以在父类中注入注释InheritanceType.JOINED吗?
  • 是否可以通过某种方式声明父类,以便根据特定项目的需要,您可以使用另一种的继承?

2 个答案:

答案 0 :(得分:0)

您可以使用XML来定义此继承树的映射。这是relevant section of the documentation

答案 1 :(得分:0)

如果您无法修改希望Hiberante用作实体的类,则可以使用.hbm.xml配置文件来执行此操作。这些可以与注释混合使用,因为所有功能都应该可用。