是否可以在Android Room中使用String作为PrimaryKey

时间:2017-12-05 08:35:32

标签: java android kotlin android-room

我在我的java后端服务器中使用uuid。所以我需要在房间里使用那个uuid来确保实体正确同步。 我知道Is it possible to apply primary key on the text fields in android databasetext as primarykey in android。我想创建像这样的东西

@Entity(tableName = CrewColumns.TABLE_NAME)
@TypeConverters(BigDecimalConverter::class)
@JsonIgnoreProperties(ignoreUnknown = true)
class Crew() {
    constructor (uuid: String) : this() {
        this.uuid = uuid;
    }

    /**
     * The unique ID of the item.
     */
    @PrimaryKey
    @ColumnInfo(name = CrewColumns.UUID)
    var uuid: String = ""
    @ColumnInfo(name = CrewColumns.NAME)
    var name: String = ""
}

Room(DAO等)会出现问题吗?谢谢。

1 个答案:

答案 0 :(得分:18)

您应该使用android注释中的@NonNull注释该字段。为此,请将此行添加到您应用的gradle:

compile 'com.android.support:support-annotations:26.1.0'

然后在代码中它就像:

一样简单
@Entity
public class User {
    @PrimaryKey
    @NonNull
    private String email;

    ...
}