【发布时间】:2020-01-07 14:07:28
【问题描述】:
我在 Android Room 中遇到外键问题。
我写了两个实体和道。客户实体具有addressesId 参数,它是对外键的引用。
@Entity(
tableName = "customers", foreignKeys = [
ForeignKey(
entity = AddressDbModel::class,
parentColumns = ["id"],
childColumns = ["address_id"]
)
],
indices = [
Index(value = ["address_id"])
]
)
data class CustomerDbModel(
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id")
val customerId: Long? = null,
@ColumnInfo(name = "name")
val name: String,
@ColumnInfo(name = "address_id")
val addressId: Long? = null
)
@Entity(tableName = "addresses")
data class AddressDbModel(
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id")
val id: Long? = null,
@ColumnInfo(name = "street_address")
val street: String? = null,
@ColumnInfo(name = "city")
val city: String,
@ColumnInfo(name = "building_number")
val buildingNumber: String? = null,
@ColumnInfo(name = "flat_number")
val flatNumber: String? = null
)
@Dao
interface AddressDao : BaseDao<AddressDbModel> {
@Query("DELETE FROM addresses WHERE id=:address")
fun deleteById(address: Long)
}
当我执行“deleteById”方法时,应用程序抛出异常,
FOREIGN KEY constraint failed (code 787 SQLITE_CONSTRAINT_FOREIGNKEY[787])
我该如何解决这个问题?
【问题讨论】:
标签: android sql android-room