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

  • Cómo anotar una columna como NOT NULL utilizando Android Room Persistence Library
  • Tipo de interferencia fallida. No coinciden los types esperados: requiere un par de cadenas encontrado <String, String> en Kotlin y Anko
  • Agregar / Consultar / Analizar SQLite usando Anko
  • IlegalStateException donde se lanzó, al intentar recuperar los valores de la instancia de RoomDatabase
  • ¿Cómo puedo unirme a tres entidades en GreenDao?