ActiveAndroid抽象类表

有谁知道是否有可能为ActiveAndroid中的抽象类创build表。 例如,我可以有一个抽象类动物与两个具体类狗和猫。 我希望能够做到这样的事情:

List<Animal> animals = new Select().from(Animals.class).execute(); 

这将导致包含所有被保存的猫和狗的“动物”。 要么:

 Animal animal = new Select().from(Animals.class).where("name = ?", name).executeSingle(); 

“动物”可以是猫还是狗。 不幸的是,当我这样做,我得到一个exception,因为没有创build抽象类动物表。 有谁知道我怎么可以去使用ActiveAndroid?

Solutions Collecting From Web of "ActiveAndroid抽象类表"

不幸的是,ActiveAndroid目前还不支持inheritance模型( https://github.com/pardom/ActiveAndroid/issues/14,https://github.com/pardom/ActiveAndroid/issues/257 )。

如果你想修改ActiveAndroid,你可以这样做:

  • 创build一些注解,允许你定义一个模型( Animals )作为非持久化的东西(参考com.activeandroid.annotation.Table )。
  • 试图执行该类的查询时,您可以使用reflection来确定其子类,然后让它执行每个子类的查询。
  • 然后你将基本上拿出每个查询的结果列表,并将它们合并成一个列表并返回。

说实话,我从来没有见过任何Android的ORM库inheritance,个人来说,我不认为这是一个很好的模型devise模式。 你可能要重新考虑你走这条道路的理由。