我在两个对象之间存在一对多关系。
可以说,我有一个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
)
UserDao:
@Transaction @Query("SELECT * FROM users")
fun getUserWithPets() : LiveData<List<UserWithPets>>
这工作正常。
现在,我想获取与每个用户关联的Pet列表...可能是
PetWithUser
。所以我做了:
data class PetWithUser (
@Embedded
var pet: Pet? = null,
@Relation(parentColumn = "user_id", entityColumn = "id", entity = Pet::class)
var user: User? = null
)
PetDao:
@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
类Pet
的IDUser
类关于Android Room一对多关系查询反向,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52006548/