我做了两张这样的桌子:
产品:
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)中没有行。
我找到了解决方案。
在Junction Function中,您需要放置与@Relation函数中相同的parentId和entityId。
所以对于这个例子来说:
data class ProductWithCategory (
@Embedded val product: Product,
@Relation(
parentColumn = "id",
entityColumn = "id",
associateBy = Junction(
ProductCategoryCrossRef::class,
"product_id",
"category_id"
)
)
val category: Category?
)