Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.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
Android 在Room数据库迁移中不是基元类型_Android_Android Room - Fatal编程技术网

Android 在Room数据库迁移中不是基元类型

Android 在Room数据库迁移中不是基元类型,android,android-room,Android,Android Room,我正在我的房间数据库中添加新的实体FeedItem,并为其编写迁移 问题:我的FeedItem类中有一个日期类型,它不是原始类型。在这种情况下,编写迁移的正确方法是什么 @Entity(tableName = "FeedItem") public class FeedItem implements Item, Votable { private int id; @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "feedItemRowInd

我正在我的房间数据库中添加新的实体FeedItem,并为其编写迁移

问题:我的FeedItem类中有一个日期类型,它不是原始类型。在这种情况下,编写迁移的正确方法是什么

@Entity(tableName = "FeedItem")
public class FeedItem implements Item, Votable {

private int id;
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "feedItemRowIndex")
private int rowIndex;
private int toId;
private int fromId;
private Date date;
...
我的迁移当前看起来像这样

private static final Migration MIGRATION_1_2 = new Migration(1, 2) {
    @Override
    public void migrate(@NonNull SupportSQLiteDatabase database) {

        database.execSQL("CREATE TABLE FeedItem (feedItemId INTEGER, " +
                "feedItemRowIndex INTEGER, " +
                "feedVotes INTEGER" +
                "feedVote INTEGER" +
                "toId INTEGER" +
                "fromId INTEGER" +
                "date Date" + // i need to change this row
                 ...
                "PRIMARY KEY (feedItemRowIndex))"
这里是日期类型的转换器

public class DateConverter {
@TypeConverter
public static Date toDate(Long timestamp) {
    return timestamp == null ? null : new Date(timestamp);
}

@TypeConverter
public static Long toTimestamp(Date date) {
    return date == null ? null : date.getTime();
}
}

谢谢

如果在build.gradle文件中设置了room.schemaLocation,则可以查看生成的架构并复制room用于创建表的确切sql。
这很容易。房间生成适合转换器类型的基本类型


所以在我的例子中,类型是整数。感谢@EpicPandaForce的评论

如果它很长,那么它很可能是整数