我有一个基类Peripheral
。课程Sensor
and Master
是的扩展Peripheral
。我需要 ORMlite 来实例化之前保存的 Peripheral 对象。显然任何实例化的尝试Peripheral
反思将导致ClassInstantiationException
由于其抽象性。我怎样才能让 ORMlite 加载任何Peripheral
对象自Peripheral
是抽象的吗?
这是我正在做的事情的示例:
@DatabaseTable(tableName="Peripheral")
abstract class Peripheral {
@DatabaseField(generatedId="true")
int _ID;
@DatabaseField
int mSerial;
}
class Sensor extends Peripheral {
}
class Master extends Peripheral {
}
由于 Peripheral 是抽象的,如何让 ORMlite 加载任何 Peripheral 对象?
我认为你的问题源于这样一个事实@DatabaseTable
需要在Sensor
and Master
类。它也属于基类不会有什么坏处,但不会在那里被检测到。
这将有一个表名为"Peripheral"
用于两个超类。任何字段(例如mSerial
) 来自基类的将被检测并用作两个超类中的字段。
唯一的限制是 ORMLite 无法区分Sensor
and Master
。它现在缺少允许您获取所有行的功能Sensor
并获取所有属于 a 的行Master
。此外,如果超类有自己的字段标记为@DatabaseField
.
Edit:
重要的是要重申ORMlite(截至 2013 年 3 月)不支持多个子类在同一张表中。子类will从基类继承数据库字段,但它们必须位于自己的表中。这是一个关于这个话题的讨论在邮件列表上。
为了实现这一点,您可以有 3 个表:1 个用于基类信息,2 个用于子类信息。子类表将具有关联基类行的外键。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)