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

2022-09-01 20:43:38

我在我的java后端服务器中使用uuid。因此,我需要在房间android中使用该uuid来确保实体正确同步。我知道是否可以在Android数据库中的文本字段上应用主键,并在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 = ""
}

房间(DAO等)会是问题吗?谢谢。


答案 1

是的,您可以将 a 用作 .String@PrimaryKey

此外,我还建议使用 Kotlin 来简化您的实体。例如:data class

@Entity
data class Crew(@PrimaryKey val uuid: String, val name: String) {
    // Put any functions or other members not initialized by the constructor here
}

答案 2

推荐