我在两个对象之间有一对多关系。
假设我有一个user
many
的{{1}}。
使用它我可以检索我的对象
pets
UserDao:
data class UserWithPets (
@Embedded
var user: User? = null,
@Relation(parentColumn = "id", entityColumn = "user_id", entity = Pet::class)
var pets: List<Pet>? = null
)
这正常工作。
现在,我想获取与每个用户相关联的Pet列表...应该是@Transaction @Query("SELECT * FROM users")
fun getUserWithPets() : LiveData<List<UserWithPets>>
。
我做到了:
PetWithUser
宠物岛:
data class PetWithUser (
@Embedded
var pet: Pet? = null,
@Relation(parentColumn = "user_id", entityColumn = "id", entity = Pet::class)
var user: User? = null
)
将@Transaction @Query("SELECT * FROM pets")
fun getPetsWithUser(): LiveData<List<PetWithUser>>
添加到代码中后,就会出现DataBinding类生成错误。
我如何建立一对多关系并与getPetsWithUser
一起获得pet
?
编辑:
错误日志:它们是从DataBinding java文件生成的。第二个(HomeFragmentDataBinding)不使用user
,但是在将PetWithUser
添加到代码中时引发错误。
PetWithUser
答案 0 :(得分:1)
正确的版本为:
data class PetWithUser (
@Embedded
var pet: Pet,
@Relation(parentColumn = "owner_id", entityColumn = "user_id")
var user: User? = null
)
其中
User
类中定义的Pet
的ID User
类中定义的用户ID匹配答案 1 :(得分:0)
您可能早就知道了这一点,但是看来您唯一的问题是您将Pet类放到了Relation行而不是User类上
@Relation(parentColumn = "user_id", entityColumn = "id", entity = Pet::class)
var user: User? = null
代替
@Relation(parentColumn = "user_id", entityColumn = "id", entity = User::class)
var user: User? = null