Я использую Room поверх SQLite для Android, и у меня есть следующие две сущности Pojo:
@Entity
public class Event {
@PrimaryKey
@NonNull
private String eventId;
private String eventName;
}
@Entity(primaryKeys = {"eventId","attendeeId"},
foreignKeys = {
@ForeignKey(entity = Event.class,
parentColumns = "eventId",
childColumns = "eventId" ,onDelete = NO_ACTION)
})
public class Attendee {
@NonNull
private String eventId;
@NonNull
private String attendeeId;
}
Когда я пытаюсь удалить запись из таблицы событий,Я получаю следующую ошибку:
Caused by: android.database.sqlite.SQLiteConstraintException: FOREIGN KEY constraint failed (code 787) at android.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount(Native Method)
at android.database.sqlite.SQLiteConnection.executeForChangedRowCount(SQLiteConnection.java:732)
at android.database.sqlite.SQLiteSession.executeForChangedRowCount(SQLiteSession.java:754)
at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:64)
at android.arch.persistence.db.framework.FrameworkSQLiteStatement.executeUpdateDelete(FrameworkSQLiteStatement.java:45)
at com.minapharm.hixspro.POJO.Room.Events.EventDao_Impl.deleteTable(EventDao_Impl.java:168)
Однако, если я изменю onDelete на CASCADE, никаких проблем не возникает!
Я что-то упустил?