我有两个对象之间的一对多关系。
我有一个 user
有 many
pets
.
使用它我可以检索我的对象
data class UserWithPets (
@Embedded
var user: User? = null,
@Relation(parentColumn = "id", entityColumn = "user_id", entity = Pet::class)
var pets: List<Pet>? = null
)
用户道:
@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>>
只要我添加
getPetsWithUser
对于代码,我在生成 DataBinding 类时遇到错误。如何建立一对多关系并获得
pet
与 user
?编辑:
错误日志:它们是从 DataBinding java 文件中生成的。第二个(HomeFragmentDataBinding)不使用
PetWithUser
但在 PetWithUser
时引发错误已添加到代码中...error: cannot find symbol
protected ListItemBinding(DataBindingComponent _bindingComponent, View _root,
^
symbol: class DataBindingComponent
location: class ListItemBinding
error: cannot find symbol
@Nullable ViewGroup root, boolean attachToRoot, @Nullable DataBindingComponent component) {
^
symbol: class DataBindingComponent
location: class FragmentHomeBinding
最佳答案
正确的版本是:
data class PetWithUser (
@Embedded
var pet: Pet,
@Relation(parentColumn = "owner_id", entityColumn = "user_id")
var user: User? = null
)
在哪里User
的 id定义于 Pet
类(class) User
中定义的用户 ID 匹配类(class) 关于Android Room 一对多关系查询反向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52006548/