【发布时间】:2020-11-12 18:31:29
【问题描述】:
我知道继承策略有三种类型:SINGLE_TABLE、TABLE_PER_CLASS、JOINED。如果我希望我的底层数据库被规范化,我认为最好的选择是JOINED。但是,让我们考虑一下这个用例:我有一个父实体和一个扩展此父实体的子实体。我使用的继承策略是JOINED。现在,我可以从应用程序的前端添加父实体和子实体。当我从前端搜索以获取所有子实体时,我能够获取所有子实体。现在,当我尝试仅在父实体上进行搜索时,我看到结果集包含所有实体(父 + 子)并且我理解为什么会发生这种情况。我的问题是,当我使用 JOINED 继承 startegy 时,有什么方法可以仅搜索/查询父实体(不包括子实体中的行)?
【问题讨论】:
-
当您说“B 扩展 A”时,它应该意味着“B 可以在任何需要 A 的地方使用”。这就是继承的全部意义。如果在某些情况下,可以使用 A 而 B 不能,那么继承可能不是建模 A 和 B 之间关系的正确方法