Aza*_*tys 8 android foreign-keys kotlin android-room
我有两个对象之间的一对多关系。我有,可以说,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
)
Run Code Online (Sandbox Code Playgroud)
用户道:
@Transaction @Query("SELECT * FROM users")
fun getUserWithPets() : LiveData<List<UserWithPets>>
Run Code Online (Sandbox Code Playgroud)
这工作正常。现在我想获得与每个用户相关联的 Pet 列表......那将是PetWithUser.
所以我做了:
data class PetWithUser (
@Embedded
var pet: Pet? = null,
@Relation(parentColumn = "user_id", entityColumn = "id", entity = Pet::class)
var user: User? = null
)
Run Code Online (Sandbox Code Playgroud)
宠物道:
@Transaction @Query("SELECT * FROM pets")
fun getPetsWithUser(): LiveData<List<PetWithUser>>
Run Code Online (Sandbox Code Playgroud)
一旦我将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
Run Code Online (Sandbox Code Playgroud)
您可能很早就发现了这一点,但看起来您唯一的问题是您在 Relation 行上放置了 Pet 类而不是 User 类:
@Relation(parentColumn = "user_id", entityColumn = "id", entity = Pet::class)
var user: User? = null
Run Code Online (Sandbox Code Playgroud)
代替
@Relation(parentColumn = "user_id", entityColumn = "id", entity = User::class)
var user: User? = null
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
649 次 |
| 最近记录: |