使用Room的父类的主键?

时间:2017-07-30 12:29:48

标签: android primary-key android-room android-architecture-components

我正在使用Android架构组件。因此使用Room'ORM'。我有一个成员EQPreset的班级String presetName。该类有一个名为UserDefinedEQPreset的子类,它包含int[] arr。我已使用EQPreset注释声明子类@Entity和实体,因为我只想将此子类型存储在db中。现在我想使用父类(EQPreset)成员String presetName作为primary key。如何在使用primary key时将父类的成员声明为Room。我知道@Primarykey注释用于声明主键。但是如何将父类的成员用作primary key

2 个答案:

答案 0 :(得分:4)

@PrimaryKey注释放在父类'字段上。完成。

例如,在this sample app中,我有abstract class Plan @PrimaryKey public final String id。所有子类(例如Trip)都继承@PrimaryKey定义。

并非所有内容都能正确继承(例如,@TypeConverters适用于字段但不适用于类),但似乎@PrimaryKey

答案 1 :(得分:0)

@Entity(primaryKeys = {"presetName"})
class UserDefinedEQPreset extends EQPreset{
    ...
}

我认为这就是您要寻找的。使用primaryKeys批注中的Entity属性来指定主键。您还可以使用它来指定复合主键。