使用 Room 的父 class 的主键?
Primary key from parent class using Room?
我正在使用 Android 架构组件。因此使用 Room
'ORM'。我有一个 class EQPreset
有一个成员 String presetName
。这个 class 有一个名为 UserDefinedEQPreset
的子 class,它包含一个 int[] arr
。我已经使用 @Entity
注释声明了子 class EQPreset
和实体,因为我只想将此子类型存储在数据库中。现在我想将父 class 的 (EQPreset
) 成员 String presetName
用作 primary key
。如何在使用 Room
时将父 class 的成员声明为 primary key
。我知道 @Primarykey
注解是用来声明主键的。但是如何将父 class 的成员用作 primary key
.
将 @PrimaryKey
注释放在父 class 字段上。完成。
例如,在 this sample app 中,我有一个 abstract class Plan
和 @PrimaryKey
public final String id
。所有子classes,例如Trip
,继承@PrimaryKey
定义。
并非所有内容都能正确继承(例如,@TypeConverters
适用于字段但不适用于 classes),但 @PrimaryKey
似乎可以。
@Entity(primaryKeys = ["presetName"])
class UserDefinedEQPreset extends EQPreset{
...
}
我想这就是您要找的。使用 Entity
注释上的 primaryKeys
属性指定主键。您还可以使用它来指定复合主键。
我正在使用 Android 架构组件。因此使用 Room
'ORM'。我有一个 class EQPreset
有一个成员 String presetName
。这个 class 有一个名为 UserDefinedEQPreset
的子 class,它包含一个 int[] arr
。我已经使用 @Entity
注释声明了子 class EQPreset
和实体,因为我只想将此子类型存储在数据库中。现在我想将父 class 的 (EQPreset
) 成员 String presetName
用作 primary key
。如何在使用 Room
时将父 class 的成员声明为 primary key
。我知道 @Primarykey
注解是用来声明主键的。但是如何将父 class 的成员用作 primary key
.
将 @PrimaryKey
注释放在父 class 字段上。完成。
例如,在 this sample app 中,我有一个 abstract class Plan
和 @PrimaryKey
public final String id
。所有子classes,例如Trip
,继承@PrimaryKey
定义。
并非所有内容都能正确继承(例如,@TypeConverters
适用于字段但不适用于 classes),但 @PrimaryKey
似乎可以。
@Entity(primaryKeys = ["presetName"])
class UserDefinedEQPreset extends EQPreset{
...
}
我想这就是您要找的。使用 Entity
注释上的 primaryKeys
属性指定主键。您还可以使用它来指定复合主键。