Android Room 一对多关系查询反向

标签 android kotlin foreign-keys android-room

我有两个对象之间的一对多关系。
我有一个 usermany 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 类时遇到错误。

如何建立一对多关系并获得 petuser ?

编辑:

错误日志:它们是从 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
)
在哪里
  • owner_id 是 User 的 id定义于 Pet类(class)
  • user_id 与 User 中定义的用户 ID 匹配类(class)
  • 关于Android Room 一对多关系查询反向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52006548/

    相关文章:

    android - MonkeyRunner NoClassDefFoundError : com/android/chimpchat/ChimpChat

    android - Kotlin:不可变类型对可变类型的内部变量的只读访问

    android - ****/数据绑定(bind)错误 ****msg :Cannot find the setter for attribute 'app:image_url' with parameter type java. lang.String on android.widget.ImageView

    kotlin - 参数数量未知的 Lambda 类型

    mysql 外键创建表

    java - 在 hibernate 中仅将属性设置为外键 int 就足够了吗?

    android - 防止 Android Studio/Intellij Idea 在启动时构建项目

    java - AES 和 IV 应如何用于文件上传?

    android - 传入短信的编码

    mysql - 可以将 phpMyAdmin "internal relations"配置为在一列上进行查找并从另一列插入值吗?