【问题标题】:Android Room cascade delete for a one to many relationshipAndroid Room级联删除一对多关系
【发布时间】:2020-07-27 18:03:00
【问题描述】:

假设我有两个实体,锻炼和锻炼,锻炼(一)和锻炼(多)之间存在一对多的关系。实体是这样设置的

锻炼实体:

@Entity(
    tableName = "workouts",
    indices = [Index("startDate")]
)
data class Workout(
    @PrimaryKey
    val startDate: String,

    val workoutName: String
)

运动实体:

@Entity
data class Exercise(
    @PrimaryKey(autoGenerate = true)
    val exerciseId: Long = 0,

    val workoutId: String,

    val name: String
)

锻炼锻炼:

@Entity(
    foreignKeys = [ForeignKey(
        entity = Workout::class,
        parentColumns = arrayOf("startDate"),
        childColumns = arrayOf("workoutId"),
        onDelete = ForeignKey.CASCADE
    )]
)
data class Exercise(
    @PrimaryKey(autoGenerate = true)
    val exerciseId: Long = 0,

    val workoutId: String,

    val name: String
)

这是我获得与锻炼相关的练习的方式:

@Transaction
@Query("SELECT * FROM workouts WHERE startDate = :startDate")
suspend fun getWorkoutWithExercises(startDate: String): WorkoutWithExercises

所以我的问题是,如果包含练习的锻炼实例被删除,相关练习是否也会被删除?如果没有,这将如何实现?

谢谢

【问题讨论】:

    标签: android kotlin android-sqlite android-room


    【解决方案1】:

    练习也将被删除,因为您已经为表格练习创建了Foreign Key

    【讨论】:

      猜你喜欢
      • 2016-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 2017-06-02
      • 2013-08-21
      • 1970-01-01
      • 2011-03-01
      相关资源
      最近更新 更多