不是原始类型间的数据库迁移

我在我的房间数据库添加新的实体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();

}

}

的感谢!

回答:

这是很容易的。房间生成适合转换器类型的原始类型。

所以在我的情况下,类型为INTEGER。感谢@EpicPandaForce的评论

回答:

如果room.schemaLocation在您的build.gradle文件中设置,那么您可以查看生成的模式并复制Room将用来创建表的准确SQL。 Complete example here

以上是 不是原始类型间的数据库迁移 的全部内容, 来源链接: utcz.com/qa/265634.html

回到顶部