【发布时间】:2021-05-05 14:23:06
【问题描述】:
我有以下实体:
@Entity(tableName = "match_frames_table")
data class DbFrame(
@PrimaryKey(autoGenerate = false)
val frameId: Int
)
在一个数据类下面,引用了其他 3 个实体,包括一个嵌套实体,DbBreakWithPots:
data class DbFrameWithScoreAndBreakWithPotsAndBallStack(
@Embedded val frame: DbFrame,
@Relation(
parentColumn = "frameId",
entityColumn = "frameId",
)
val frameScore: List<DbScore>,
@Relation(
parentColumn = "frameId",
entityColumn = "frameId",
entity = DbBreak::class
)
val frameStack: List<DbBreakWithPots>,
@Relation(
parentColumn = "frameId",
entityColumn = "frameId"
)
val ballStack: List<DbBall>
)
其中DbBreakWithPots如下:
data class DbBreakWithPots(
@Embedded val matchBreak: DbBreak,
@Relation(
parentColumn = "breakId",
entityColumn = "breakId"
)
val matchPots: List<DbPot>
)
在我的 DAO 中,我实现了查询方法,效果很好:
@Query("SELECT * FROM match_frames_table")
fun getMatchFrames(): LiveData<List<DbFrameWithScoreAndBreakWithPotsAndBallStack>>
但是,目前我正在逐个表手动地从数据库中插入和删除,但是我有嵌套关系的事实使它变得棘手。有没有办法简单地插入DbFrame 并通过一个 sql 请求将其删除?
【问题讨论】:
标签: android sql android-studio kotlin android-room