房间表,房间中有 2 个实体和 1 个交汇处(桥)实体

问题描述 投票:0回答:1

我做了两张这样的桌子:

产品:

id 名字 生物
0 芙蓉 正确
1 橙色 错误

类别:

id 名字 颜色
0 首先 蓝色
1 第二 绿色

这是我的连接表

产品类别交叉参考:

id 产品_id 类别_id
0 0 1
1 1 0

在我的代码中,问题是,产品已正确获取,但类别不是,我不知道问题出在哪里。

这是我的数据类->

data class ProductWithCategory (
    @Embedded val product: Product,
    @Relation(
        parentColumn = "id",
        entityColumn = "id",
        associateBy = Junction(ProductCategoryCrossRef::class)
    )
    val category: Category?
)
@Entity("product_with_category")
data class ProductCategoryCrossRef (
    @PrimaryKey(autoGenerate = true) val id: Int? = null,
    @ColumnInfo(name = "product_id") val productId: Int = 0,
    @ColumnInfo(name = "category_id") val categoryId: Int = 0
)

Ps : 有时,如果删除某个类别,该产品将没有类别,因此product_with_category表(ProductCategoryCrossRef)中没有行。

android sqlite android-room
1个回答
0
投票

我找到了解决方案。

在Junction Function中,您需要放置与@Relation函数中相同的parentIdentityId

所以对于这个例子来说:

data class ProductWithCategory (
    @Embedded val product: Product,
    @Relation(
        parentColumn = "id",
        entityColumn = "id",
        associateBy = Junction(
            ProductCategoryCrossRef::class,
            "product_id",
            "category_id"
        )
    )
    val category: Category?
)
© www.soinside.com 2019 - 2024. All rights reserved.