Я нахожусь в процессе переноса моего приложения для использования Room и мне нужна небольшая помощь, чтобы выяснить, как правильно аннотировать одну из моих таблиц.
Существующий сценарий SQL выглядит следующим образом:
CREATE TABLE member_rooms (
_id INTEGER PRIMARY KEY AUTOINCREMENT,
new_messages INTEGER DEFAULT 0,
member_id_fk TEXT,
FOREIGN KEY ( member_id_fk ) REFERENCES members ( member_id ) ON DELETE CASCADE,
UNIQUE ( member_id ) ON CONFLICT REPLACE )
Мой новый класс сущностей выглядит следующим образом:
@Entity(tableName = "member_rooms",
indices = {@Index(value = {"member_id_fk"}, unique = true)},
foreignKeys = {@ForeignKey(entity = MemberTableModel.class,
parentColumns = "member_id",
childColumns = "member_id_fk",
onDelete = CASCADE)})
public class MemberRoomTableModel {
@PrimaryKey(autoGenerate = true)
@NonNull
@ColumnInfo(name = "_id")
private int rowId;
@ColumnInfo(name = "new_messages")
private int numNewMessages;
@ColumnInfo(name = "member_id_fk")
private String memberId;
.... constructors getters etc ... }
Я верю, что это правильное представление этой таблицы, но ограничение ON CONFLICT REPLACE - это то, что сбивает меня с толку.Поскольку Room использует SupportSqlOpenHelper / Database, новые API-интерфейсы обертки включают в себя стратегию конфликта во время запроса.Заменяет ли это ограничение на таблицу?Должны ли мои DAO теперь обрабатывать конфликт по каждому из запросов?Или есть поле для аннотации, которое заменяет в сущности, которую я пропускаю?