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
  • Seleccionar datos de dos tablas en Kotlin Anko
  • Base de datos de android de Kotlin: no se puede convertir java.lang.String en android.database.Cursor
  • Error al hacer que Enum sea la key principal en la biblioteca de la database de la sala
  • No se puede acceder a BaseColumns proporciona la propiedad _ID en Kotlin