Java 是否可以在Android房间中使用字符串作为主键
我在java后端服务器中使用uuid。所以我需要在房间android中使用uuid来确保实体正确同步。 我意识到了这一点。我想创造这样的东西Java 是否可以在Android房间中使用字符串作为主键,java,android,kotlin,android-room,Java,Android,Kotlin,Android Room,我在java后端服务器中使用uuid。所以我需要在房间android中使用uuid来确保实体正确同步。 我意识到了这一点。我想创造这样的东西 @Entity(tableName = CrewColumns.TABLE_NAME) @TypeConverters(BigDecimalConverter::class) @JsonIgnoreProperties(ignoreUnknown = true) class Crew() { constructor (uuid: String) :
@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等)会有问题吗?谢谢。是的,您可以使用
字符串作为@PrimaryKey
此外,我还建议使用Kotlin的数据类来简化实体。例如:
@Entity
data class Crew(@PrimaryKey val uuid: String, val name: String) {
// Put any functions or other members not initialized by the constructor here
}
您当然可以使用字符串作为主键。您在试用时遇到了什么具体问题?@commonware当前无。@Juanmean而kotlin呢?我们是否也必须对非null进行注释?@mochadwi无需注释,因为该语言已经有了一种指示字符串不可为null的方法。如果执行了插入,并且主键的类型为String,那么返回类型将是什么?它是否也可以是String类型?比如,下面的节目@插入(onConflict=onConflict策略替换)单个插入(乘员);