Erro "Cannot find setter for field" no Room com Kotlin: causas e solução
Olá, colegas! Sou novo em Kotlin e estou tentando usar Room para armazenamento local de dados. Tenho uma entidade simples User:
```kotlin
@Entity(tableName = "users")
data class User(
@PrimaryKey val id: Int,
val name: String,
val age: Int
)
```
E DAO:
```kotlin
@Dao
interface UserDao {
@Insert
suspend fun insert(user: User)
@Query("SELECT * FROM users WHERE id = :id")
suspend fun getUser(id: Int): User?
}
```
Mas quando executo o aplicativo, recebo o erro:
```
Cannot find setter for field - User.name
```
Li que Room requer setters para os campos, mas eu tenho um data class — eles são gerados automaticamente. Qual pode ser o problema? Estou usando Room versão 2.5.0 e Kotlin 1.8.0. Meu arquivo Gradle está configurado com kapt, as anotações parecem estar conectadas. Por favor, me digam o que estou fazendo de errado?
A propósito, se eu mudar val para var, o erro desaparece. Mas quero que os campos sejam imutáveis (immutable). É possível contornar isso sem?