【发布时间】:2018-08-24 14:23:19
【问题描述】:
我有两个对象之间的一对多关系。
比如说,我有一个 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>>
这工作正常。
现在我想获取与每个用户相关联的 Pet 列表...应该是 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
【问题讨论】:
-
你能从错误中得到一些信息吗?你能发布一些错误日志吗
-
我有一个疑问。一个用户可以拥有许多宠物。同样,一个 Pet 可以属于多个用户吗?例如,一条狗(比如 A)可以属于多个用户(user1,user2)吗?
-
很抱歉,如果不清楚。一个用户可以拥有许多宠物(是的!)。一个宠物只能有 1 个用户。我想获取 db 中所有 Pets 及其关联用户的列表。
标签: android kotlin foreign-keys android-room