Удалить объекты из комнаты DB - PullRequest
0 голосов
/ 29 января 2019

Довольно плохо знакомый с комнатой и с трудом находящий информацию об этом.В настоящее время мы определяем нашу базу данных следующим образом:

@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 {

Вопрос: Как мне это сделать?миграция

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Другой вариант - использовать fallbackToDestructiveMigration и увеличивать версию базы данных.В таком случае вам не придется предоставлять миграцию.Однако это очистит данные во всех старых таблицах.

0 голосов
/ 29 января 2019

Вам нужно увеличить версию (чтобы она стала version = 2).

Далее, при построении экземпляра Room с использованием метода Room.databaseBuilder добавьте строку 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...