我的项目中有一个简单的继承关系,我希望超类是抽象的。一些继承类将需要额外的数据库信息,但其他类则不需要。我不确定使用哪种继承策略。
我似乎无法找到一个直接的答案,因为天气超级类可以有一个抽象类与JOINED策略。
我怀疑子类的数量不会太大,而且它们都不应该有很多额外的数据,所以也许SINGLE_TABLE就足够了。
我真的不想无缘无故地使用额外的表,所以TABLE_PER_CLASS是不合适的。
我很感激任何指导。
由于
答案 0 :(得分:3)
如果子类不需要表,我几乎总是只使用单表方法继承。如果由于某种原因,其中一个需要表的子类有一些荒谬的额外字段(例如10+),额外的数据可能表明你需要为某些子类创建单独的表,为其他子表创建平面表。 / p>
这将如何在hibernate中专门映射,我不确定,但我认为这是一种明智的方式来模拟它。
答案 1 :(得分:0)
回答这个问题太迟了,但如果其他人有类似的情况可能会有所帮助。
使用SingleTable策略,如果其中一个子类有更多字段并且需要一个单独的表,那么使用@SecondaryTable注释将该子类标记为SecondaryTable并使用PrimaryKeyJoin(有一个注释)来加入与pk列上的超类。此外,子类中的所有字段都应使用@column批注中的“table”属性显式映射到secondaryTable。