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 puedo unirme a tres entidades en GreenDao?
  • Android (Kotlin): sobrescribe el nombre para la input del logging de llamadas
  • ¿Cómo unir dos tablas en Android usando el método de consulta del proveedor de contenido?
  • Error de la database de la sala Android: parámetro no utilizado: días en la function @Query
  • Seleccionar datos de dos tablas en Kotlin Anko