Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有唯一on replace约束的Android房间表_Android_Android Room_Android Architecture Components - Fatal编程技术网

具有唯一on replace约束的Android房间表

具有唯一on replace约束的Android房间表,android,android-room,android-architecture-components,Android,Android Room,Android Architecture Components,我正在将我的应用程序迁移到使用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 )

我正在将我的应用程序迁移到使用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/数据库,因此新的包装器API在查询时包含冲突策略。这是否替换了表上的约束?我的DAO现在是否需要处理每个查询上的冲突?或者在我丢失的实体中是否有替换的字段要注释?

用OnConflictStrategy注释您的所有DAO方法,实体不提供这样的机会。

用OnConflictStrategy注释您的所有DAO方法,实体不提供这样的机会。

好吧。所以我假设在迁移到房间的过程中,当试图保留现有数据时,差异不会引起问题?这将归结为表名、列和索引/键匹配?我不会将现有数据迁移到文件室,因此我不知道:(好的,很公平。所以我假设在迁移到文件室的过程中,当试图保留现有数据时,差异不会引起问题?这将归结为表名、列和索引/键匹配问题?我不会将现有数据迁移到文件室,所以我不知道:(