Cómo hacer que la key principal sea autoincrement para Room Persistence lib

Estoy creando una class Entity (Room Persistence lib) Food, donde quiero hacer foodId como autoincrement.

 @Entity class Food(var foodName: String, var foodDesc: String, var protein: Double, var carbs: Double, var fat: Double) { @PrimaryKey var foodId: Int = 0 var calories: Double = 0.toDouble() } 

¿Cómo puedo establecer foodId un campo de autoincrement?

Necesita usar la propiedad autoGenerate

Su anotación de key principal debería ser así:

 @PrimaryKey(autoGenerate = true) 

Referencia aquí

Puede agregar @PrimaryKey(autoGenerate = true) esta manera:

 @Entity data class Food( var foodName: String, var foodDesc: String, var protein: Double, var carbs: Double, var fat: Double ){ @PrimaryKey(autoGenerate = true) var foodId: Int = 0 var calories: Double = 0.toDouble() } 

Por ejemplo, si tiene una entidad de users que desea almacenar, con campos (firstname, lastname , email) y desea una identificación generada automáticamente, haga esto.

 @Entity(tableName = "users") data class Users( @PrimaryKey(autoGenerated = true) val id: Long, val firstname: String, val lastname: String, val email: String ) 

La habitación luego se autogenerará e incrementará automáticamente el campo de id .

  • Devolviendo un valor producido en Kotlin coroutine
  • Cómo get el nombre de file de class actual en kotlin
  • Los files de Kotlin no pueden usar R.java
  • El cliente de Bluetooth Socket recibe la misma exception cada vez
  • msg: ¿No se puede encontrar el getter para el atributo 'android: text' con el tipo de valor java.lang.String en el data binding?
  • La ejecución de Android falló para la tarea app.compileDebugKotlin cuando se usa firebase
  • Usar con autoclose en Kotlin
  • Cómo usar Kotlin en proyectos de App Engine usando Gradle
  • La testing de instrumento Android con Espresso falla: NoSuchMethodError get () en javax.inject.Provider
  • Implementar Hashmap con diferentes types de valores en Kotlin
  • En Kotlin, ¿cómo leo todo el contenido de un InputStream en una cadena?