【问题标题】:Room How to fetch on 3 tables with Foreign KeysRoom 如何使用外键获取 3 张桌子
【发布时间】:2020-11-12 14:36:08
【问题描述】:

我有一个名为 User 的表。该表有两个外键 Account 和 Shop(都是 1..1 关系)。 所以我创建了一个名为 UserAndAccount 的数据类和另一个名为 UserAndShop 的数据类。

我现在如何获取所有这些数据(将等于 UserAndAccountAndShop)?

用户.kt

@Entity(
    tableName = "User"
)
data class User(

    @PrimaryKey(autoGenerate = false)
    @SerializedName("unique_id")
    var uniqueID: String,

    @SerializedName("email")
    var email: String = "",

    @SerializedName("username")
    var username: String = ""
)

帐户.kt

@Entity(
    tableName = "Account"
)
data class Account(

    @PrimaryKey(autoGenerate = true)
    @SerializedName("account_id")
    var accountID: Int,

    @SerializedName("user_id")
    var userOwnerID: String = "",

    @SerializedName("token")
    var token: String = ""
)

商店.kt

@Entity(
    tableName = "Shop"
)
data class Shop(

    @PrimaryKey(autoGenerate = true)
    @SerializedName("shop_id")
    var shopID: Int,

    @SerializedName("shop_owner_id")
    var shopOwnerID: String,

    @SerializedName("shop_name")
    var shopName: String = ""
)

UserAndAccount.kt

data class UserAndAccount(
    @Embedded val user: User,
    @Relation(
        parentColumn = "uniqueID",
        entityColumn = "userOwnerID"
    )
    val account: Account
)

UserAndShop.kt

data class UserAndShop(
    @Embedded val user: User,
    @Relation(
        parentColumn = "uniqueID",
        entityColumn = "shopOwnerID"
    )
    val shop: Shop
)

【问题讨论】:

    标签: kotlin foreign-keys android-room one-to-one


    【解决方案1】:

    致任何寻找答案的人:

    您可以将多个@Relation 添加到数据类中。 所以我创建了这个数据类:

    UserAndAccountAndShop.kt

    data class UserAndAccountAndShop(
        @Embedded val user: User,
        @Relation(
            parentColumn = "uniqueID",
            entityColumn = "accountOwnerID"
        )
        val account: Account,
    
        @Relation(
            parentColumn = "uniqueID",
            entityColumn = "shopOwnerID"
        )
        val shop: Shop
    )
    

    就是这样!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      • 2020-02-09
      相关资源
      最近更新 更多