Я надеюсь, что это решит проблему
ываясь на моем предыдущем вопросе (Комната постоянства Android: «Не могу понять, как читать это поле из курсора»), который я получил на работу благодаря обратной связи, я реализовал тот же пример в Kolin (см. код ниже). Мне пришлось внести некоторые незначительные изменения, такие как параметры, которые теперь передаются в запрос, которые должны быть переданы как «p0», «p1» и т. Д. Теперь в Kotlin я получаю следующую ошибку, связанную с классом UserWithPets:
ошибка: не удается понять, как прочитать это поле из курсора. e: private java.util.List домашние животные;
@Dao
interface UserDAO {
@get:Query("SELECT * FROM user")
val all: LiveData<List<User>>
@Insert
fun insertUser(user: User) //single one
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertUsers(vararg users: User)
@Query("SELECT * FROM User")
fun loadUsersWithPets(): LiveData<List<UserWithPets>>
}
@Entity
class Pet( var name: String?, var ownerId: Int,@PrimaryKey(autoGenerate = true)var id:Int)
@Dao
interface PetDAO {
@Query("SELECT * FROM pet")
val all: List<Pet>
@Query("SELECT * FROM pet WHERE id IN (:p0)")
fun loadAllByIds(petIds: IntArray): List<Pet>
@Insert
fun insert(pet: Pet)
@Insert
fun insertAll(vararg pets: Pet)
@Delete
fun delete(user: Pet)
}
class UserWithPets {
@Embedded
var user: User? = null
@Relation(parentColumn = "id", entityColumn = "ownerId", entity = Pet::class)
var pets: List<Pet>? = null
}
Похоже, что если я напишуUserWithPets
класс в Java, он будет работать нормально, но не работает, когда написано на Kotlin Есть идеи, что не так? Это проблема с обработкой аннотаций?