Por qué las entidades Room no funcionan con properties inmutables en Android

He estado explorando la biblioteca de mapeo de objects de la database Room y he pensado que es algo raro.

Un model de datos de entidad no puede tener properties inmutables, como sugiere esta respuesta.

Pero revisé el ejemplo persistente de google con kotlin , Room funciona con properties inmutables. Por favor revise esta class de datos del ejemplo.

¿Cuál podría ser el motivo de este comportamiento?

Esta podría ser una buena característica si pudiéramos crear valores inmutables (properties de val ), ya que esto impide que los progtwigdores cambien los identificadores únicos, como los identificadores, después de que se haya creado un object.

Es extraño porque puedo hacer que mi class Entity use val para todos mis campos sin problema

 @Entity(tableName = "repo") data class RepoEntity( @PrimaryKey @ColumnInfo(name = "id") @SerializedName("id") val id: Int, @ColumnInfo(name = "name") @SerializedName("name") val name: String, @ColumnInfo(name = "full_name") @SerializedName("full_name") val fullName: String, @Embedded(prefix = "owner") @SerializedName("owner") val owner: RepoOwnerEntity, @ColumnInfo(name = "html_url") @SerializedName("html_url") val htmlUrl: String, @ColumnInfo(name = "description") @SerializedName("description") val description: String? ) 

Y los datos aún se almacenan correctamente dentro de la database. enter image description here

  • Android (Kotlin): sobrescribe el nombre para la input del logging de llamadas
  • No se puede acceder a BaseColumns proporciona la propiedad _ID en Kotlin
  • ¿Cómo unir dos tablas en Android usando el método de consulta del proveedor de contenido?
  • IlegalStateException donde se lanzó, al intentar recuperar los valores de la instancia de RoomDatabase
  • Tipo de interferencia fallida. No coinciden los types esperados: requiere un par de cadenas encontrado <String, String> en Kotlin y Anko