ormlite是否支持继承?

Flo*_*low 15 inheritance android ormlite

ormlite是否支持这三种继承策略?

  • 每个类层次结构的表
  • 每个子类的表
  • 每个具体类的表

在ORMLite用户组上找到了这个讨论,但我不确定它是否回答了我的问题.

特别我想使用"每个类层次结构的表".如果他们不是ormlite框架的支持,我将创建一个类并忘记继承,但我更喜欢使用继承.

Gra*_*ray 10

ORMLite不会自动支持这些,不.我不确定你是否真的阅读了你所链接的主题,因为它非常具体:

我需要的是:如果我将A类作为超类,并且我有直接的子类B和C,并且我对A类的所有记录/对象运行查询,我确实希望拥有A,B和A类的所有对象. 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.然后你也可以查询B和C并使用A DAO刷新并获得你无法投射的A的字段.A也可能有某种枚举,表示它是A,B还是C.你也可以做一些魔术,你可以说getSubClassObject(),如果要查看枚举并查询B或C dao为具有A对象的右外键的关联对象.

  • ORMLite似乎非常有前途,我开始在我的项目中使用它,直到我意识到它不支持继承映射策略.每个具体的课程策略都需要表格.由于该工具会影响我的模型类设计,因此我决定不使用它,并使用传统的Android内容提供程序和简单的自定义DAO框架. (2认同)