我的项目中有一个简单的继承关系,我想让超类是抽象的。一些继承类将需要额外的数据库信息,但其他类则不需要。我不确定要使用哪种继承策略。
我似乎无法找到一个直接的答案,即超类可以拥有一个带有 JOINED 策略的抽象类。
我怀疑子类的数量不会变得太大,而且它们都不应该有太多额外的数据,所以也许一个 SINGLE_TABLE 就足够了。
我真的不想无缘无故地有多余的表,所以 TABLE_PER_CLASS 是不合适的。
我会很感激任何指导。
谢谢
我的项目中有一个简单的继承关系,我想让超类是抽象的。一些继承类将需要额外的数据库信息,但其他类则不需要。我不确定要使用哪种继承策略。
我似乎无法找到一个直接的答案,即超类可以拥有一个带有 JOINED 策略的抽象类。
我怀疑子类的数量不会变得太大,而且它们都不应该有太多额外的数据,所以也许一个 SINGLE_TABLE 就足够了。
我真的不想无缘无故地有多余的表,所以 TABLE_PER_CLASS 是不合适的。
我会很感激任何指导。
谢谢
如果子类不需要表,我几乎总是只使用单表方法进行继承。如果由于某种原因,确实需要表的子类之一有一些荒谬的额外字段(比如 10+),那么额外的数据可能表明您需要为某些子类创建单独的表并为其他子类创建平面表。
这将如何在休眠中具体映射,我不确定,但我认为这是建模它的明智方法。
回答这个问题为时已晚,但如果其他人有类似的情况可能会有所帮助。
使用 SingleTable 策略,如果您认为其中一个子类有更多字段并且需要单独的表,则使用 @SecondaryTable 注释将该子类标记为 SecondaryTable 并使用 PrimaryKeyJoin(对此有注释)与超类连接pk 列。此外,子类中的所有字段都应使用@column 注释中的'table' 属性显式映射到secondaryTable。