部屋にはかなり新しく、これに関する情報を見つけるのに苦労しています。現在、データベースを次のように定義しています。
@Database(entities = {TwcLocation.class,
CurrentObservation.class,
Day.class,
Hour.class,
Station.class,
StationCurrentObservation.class}, version = 1, exportSchema = false)
public abstract class TwcLocationDatabase extends RoomDatabase {
ここで、未使用のエンティティの束を削除して、次のようにします。
@Database(entities = {TwcLocation.class, Tag.class}, version = 1)
@TypeConverters({TwcLocationTypeConverter.class})
public abstract class NbcRoomDatabase extends RoomDatabase {
質問:この移行を行うにはどうすればよいですか?
バージョンをインクリメントする必要があります(したがって、になりますversion = 2
)。
次に、Room.databaseBuilder
メソッドを使用してRoomインスタンスを構築するときに、addMigration()
行を追加します。
移行として、以下を渡してテーブルを削除します。
// Migration from version 1 to 2
static final Migration MIGRATION_1_2 = new Migration(1, 2) {
@Override
public void migrate(SupportSQLiteDatabase database) {
// Remove the table
database.execSQL("DROP TABLE day"); // This line for each table that you want to remove
}
};
後で、複数の異なる移行が必要になる場合があります。次のaddMigrations()
方法を使用して移行できます。
Room.databaseBuilder(..., ..., ...)
.addMigrations(MIGRATION_1_2, MIGRATION_2_3)
.build()
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加