Возможно ли использовать String как PrimaryKey в Android Room

Я использую uuid на моем сервере Java. Поэтому мне нужно использовать этот 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 и т. Д.)? Спасибо.

Вы должны аннотировать это поле с @NonNull из аннотаций андроида. Для этого добавьте эту строку в градиент вашего приложения:

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

И тогда в коде это просто:

 @Entity public class User { @PrimaryKey @NonNull private String email; ... }