ActiveAndroid 抽象类表

2022-09-03 03:05:32

有谁知道是否可以在ActiveAndroid中为抽象类创建一个表。例如,我可以有一个抽象类Animal,其中包含两个具体类Dog和Cat。我希望能够做这样的事情:

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

这将导致“动物”包含所有保存的猫和狗。艺术

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

“动物”可以是猫或狗。不幸的是,当我这样做时,我得到了一个例外,因为没有为抽象类Animal创建表。有谁知道我如何使用ActiveAndroid来解决这个问题?


答案 1

不幸的是,ActiveAndroid目前还不支持以这种方式继承模型(https://github.com/pardom/ActiveAndroid/issues/14https://github.com/pardom/ActiveAndroid/issues/257)。

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

  • 创建某种注释,允许您将模型 () 定义为未持久化的内容(请参阅)。Animalscom.activeandroid.annotation.Table
  • 在尝试执行该类的查询时,可以使用反射来确定其子类,然后让它对每个子类执行该查询。
  • 然后,您基本上会获取每个查询的结果列表,并将它们合并为一个列表并返回该列表。

老实说,我从未在任何Android ORM库中看到过继承,我个人认为这不是一个好的模型设计模式。你可能想重新考虑你走这条路的理由。


答案 2

推荐