Fehler "Cannot find setter for field" in Room mit Kotlin: Ursachen und Lösung
Hallo Kollegen! Ich bin neu in Kotlin und versuche, Room für die lokale Datenspeicherung zu verwenden. Ich habe eine einfache Entity User:
```kotlin
@Entity(tableName = "users")
data class User(
@PrimaryKey val id: Int,
val name: String,
val age: Int
)
```
Und DAO:
```kotlin
@Dao
interface UserDao {
@Insert
suspend fun insert(user: User)
@Query("SELECT * FROM users WHERE id = :id")
suspend fun getUser(id: Int): User?
}
```
Aber wenn ich die App starte, erhalte ich den Fehler:
```
Cannot find setter for field - User.name
```
Ich habe gelesen, dass Room Setter für Felder benötigt, aber ich habe doch einen data class – die werden automatisch generiert. Wo könnte das Problem liegen? Ich verwende Room Version 2.5.0 und Kotlin 1.8.0. Meine Gradle-Datei ist mit kapt konfiguriert, Annotationen scheinen eingebunden zu sein. Bitte sagt mir, was ich falsch mache?
Übrigens, wenn ich val in var ändere, verschwindet der Fehler. Aber ich möchte, dass die Felder unveränderlich (immutable) sind. Kann man das irgendwie umgehen, oh