ormlite 是否支持这三种继承策略?
- 每个类层次结构表
- 每个子类的表
- 每个具体类的表
我在 ORMLite user group 上找到了这个讨论,但我不确定它是否能回答我的问题。
特别是我想使用“每个类层次结构表”。如果 ormlite 框架不支持它们,我将创建一个类并忘记继承,但我更喜欢使用继承。
ormlite 是否支持这三种继承策略?
我在 ORMLite user group 上找到了这个讨论,但我不确定它是否能回答我的问题。
特别是我想使用“每个类层次结构表”。如果 ormlite 框架不支持它们,我将创建一个类并忘记继承,但我更喜欢使用继承。
ORMLite不自动支持这些,不。我不确定您是否真的阅读了您链接到的线程,因为它非常具体:
我需要的是:如果我将 A 类作为超类,并且我有直接的子类 B 和 C,并且我对 A 类的所有记录/对象运行查询,我确实希望拥有 A、B 和C回来了。
是的,ORMLite 不这样做,目前我没有计划支持它。除非我在如何实现这一点上弄错了,否则它的复杂性超出了我所说的“精简版”。Hibernate 支持这种结构的方式是使用外键、多个表和魔术连接。
这个问题给出了一些关于如何使用 ORMLite 来实现继承的想法:
1)你可以有A类和一个关联的表——所以它不能是抽象的。然后你可以有 B 和 C 哪个子类 A 并将所有 As 字段分别放在一个单独的表中。然后,您可以为 A 创建一个特殊的 DAO,它还将查询 B 和 C,并将它们添加到 A 的结果中。
2)另一种方法是你可以让B类和C类不是子类,而是对A有一个外来对象。然后你可以查询所有的As,其中一些是B的A部分和一些C的A部分和有些只是 A。然后您还可以查询 Bs 和 Cs,并使用 A DAO 刷新并获取您无法转换的 A 字段。A 也可以有某种枚举,它表示它是 A、B 还是 C。你也可以做一些魔术,你可以说 getSubClassObject(),如果会查看枚举并查询 B 或 C dao关联对象与 A 对象的正确外键。