我正在使用Android架构组件。因此使用Room
'ORM'。我有一个成员EQPreset
的班级String presetName
。该类有一个名为UserDefinedEQPreset
的子类,它包含int[] arr
。我已使用EQPreset
注释声明子类@Entity
和实体,因为我只想将此子类型存储在db中。现在我想使用父类(EQPreset
)成员String presetName
作为primary key
。如何在使用primary key
时将父类的成员声明为Room
。我知道@Primarykey
注释用于声明主键。但是如何将父类的成员用作primary key
。
答案 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
属性来指定主键。您还可以使用它来指定复合主键。