Basis auf meiner vorherigen Frage (Android Persistence room: "Cannot figure out how to read this field from a cursor"), die ich dank der Rückmeldung arbeiten musste, habe ich das gleiche Beispiel in Kolin implementiert (siehe Code unten). Ich musste einige kleinere Änderungen wie die Parameter vornehmen, die jetzt an eine Abfrage übergeben werden, die als "p0", "p1" usw. weitergegeben werden müssen. Jetzt in Kotlin erhalte ich den folgenden Fehler in Bezug auf die Klasse UserWithPets:Raumpersistenz @Relation arbeiten in Java aber nicht in Kolin
Fehler: Kann nicht herausfinden, wie dieses Feld von einem Cursor gelesen wird. e: private java.util.List Haustiere;
@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
}
Es scheint, dass, wenn ich die UserWithPets
Klasse in Java schreiben, wird es funktionieren, aber nicht, wenn es in Kotlin geschrieben. Irgendwelche Ideen was ist falsch? Ist dies ein Problem bei der Verarbeitung von Anmerkungen?
Versuchen Sie 'List <@JvmSuppressWildcards Pet>'. Docs: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-jvm-suppress-wildcards/ –
Ich bin mit dem gleichen Problem konfrontiert. Es funktioniert nicht mit Kotlin-Klasse –
Ich habe dieses Problem erstellt https://issuetracker.google.com/issues/62778467 Ursache konnte ich es nicht lösen. –