gpt4 book ai didi

android - 如何连接ROOM中的三个表

转载 作者:行者123 更新时间:2023-12-05 00:19:21 25 4
gpt4 key购买 nike

我需要加入三个实体

1.

@Entity(tableName = "accounts") data class AccountModel(
@PrimaryKey(autoGenerate = true)
val id: Int = 0,
var name: String = "name",
var currency: String = "currency",
var number: String? = null,
var color: Int = 0,
var value: Double = 0.0,
var start_value: Double = 0.0,
var note: String? = null,
var accountType: String? = null)
@Entity(tableName = "categories")data class CategoryModel (
@PrimaryKey(autoGenerate = true)
var id: Int? = null,
var name: String,
var color: Int,
var is_income: Boolean
)
@Entity(tableName = "transactions")
data class TransactionModel(
@PrimaryKey(autoGenerate = true)
val id: Int = 0,
var name: String? = null,
var date: Long = 0L,
var value: Double = 0.0,
var account_id: Int? = null, <-
var category_id: Int? = null, <-
var description: String? = null,
var is_income: Boolean = true
)

这是什么类型的关系?我可以一对一。是一对多吗?我应该使用 Junction 吗?

最佳答案

这是一对一的关系。您可以添加下一个类:

data class TransactionWithAccountAndCategory(
@Embedded val transaction: Transaction,
@Relation(
parentColumn = "account_id",
entityColumn = "id"
)
val account: AccountModel
@Relation(
parentColumn = "category_id",
entityColumn = "id"
)
val category: CategoryModel
)

然后用下一个方法得到它:

@Transaction
@Query("SELECT * FROM transactions")
fun getTransactions(): List<TransactionWithAccountAndCategory>

因此您不必使用 Junction,因为它只需要用于与附加表的多对多关系(根据您的实体,您没有这种情况)。

关于android - 如何连接ROOM中的三个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63150990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com