我正在处理一个像one-to-many
数据库这样的图像.
为了解释函数的流程,每当按下Add button
时,列表中就会添加WorkoutSetInfo
.(It is not inserted into DB.
)
最后,当按下Save button
时,Workout
和WorkoutSetInfo list
被插入DB
.
我已经完成了设置Workout
和WorkoutSetInfo
之间的关系,但我不知道如何将每个Workout
中的ID
与Id(parendWorkoutId
)WorktoutSetInfo
匹配.
(现在,parendWorkoutId
的所有ID都设置为1
.)
我该怎么设置呢?
Workout
@Entity
data class Workout(
@PrimaryKey(autoGenerate = true)
val workoutId: Long,
val title: String = "",
var unit: String = "kg",
val memo: String = "",
)
WorkoutSetInfo
@Entity(
foreignKeys = [
ForeignKey(
entity = Workout::class,
parentColumns = arrayOf("workoutId"),
childColumns = arrayOf("parentWorkoutId"),
onDelete = ForeignKey.CASCADE
)
]
)
data class WorkoutSetInfo(
@PrimaryKey(autoGenerate = true)
val id: Long = 0,
val set: Int,
var weight: String = "",
var reps: String = "",
val parentWorkoutId: Long = 1 // How do I set this up?
)
WorkoutWithSets
data class WorkoutWithSets(
@Embedded val workout: Workout,
@Relation (
parentColumn = "workoutId" ,
entityColumn = "parentWorkoutId"
)
val sets: List<WorkoutSetInfo>
)
Repository
class WorkoutRepository(private val workoutDao : WorkoutDao, title: String) {
val workout = Workout(0, title)
private val setInfoList = ArrayList<WorkoutSetInfo>()
fun add() {
val item = WorkoutSetInfo(set = setInfoList.size + 1)
setInfoList.add(item)
}
fun delete() {
if(setInfoList.size != 0)
setInfoList.removeLast()
return
}
fun save() {
workoutDao.insertWorkout(workout)
workoutDao.insertSetInfoList(setInfoList)
}
}