gpt4 book ai didi

android - Room Persistence @Relation 在 Java 中工作,但在 Kotlin 中不工作

转载 作者:IT老高 更新时间:2023-10-28 13:36:23 25 4
gpt4 key购买 nike

基于我之前的问题(Android Persistence room: "Cannot figure out how to read this field from a cursor"),感谢反馈,我在 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
}

看来,如果我用 Java 编写 UserWithPets 类,它可以正常工作,但用 Kotlin 编写时会失败。有什么想法有什么问题吗?这是注释处理问题吗?

最佳答案

尝试将房间更新为 1.0.0-alpha8 并添加 List<@JvmSuppressWildcards Pet>。

关于android - Room Persistence @Relation 在 Java 中工作,但在 Kotlin 中不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44522799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com