ormlite是否支持这三种继承策略?
我找到this discussion on the ORMLite user group,但我不确定它是否回答了我的问题。
特别想要使用“每个类层次结构的表”。如果他们不是ormlite框架的支持,我将创建一个类并忘记继承,但我更喜欢使用继承。
答案 0 :(得分:10)
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对象的右外键的关联对象。