Как изменить первичный ключ базы данных Room?

Изменение моего первичного ключа потребовало от меня обновления версии моей базы данных. Есть ли способ изменить мой первичный ключ из одного поля в другое, используя класс миграции в комнате? Если нет, как мне изменить свой первичный ключ? Ниже приведен фрагмент моего Entity.

@Entity(tableName = "weather")
public class Weather {
    @PrimaryKey
    @NonNull
    @ColumnInfo(name = "id")
    private final String id;

    @NonNull
    @ColumnInfo(name = "city")
    private final String city;

Я хотел бы переключиться с id на city.


person Bernard Koh    schedule 01.02.2018    source источник
comment
Просто совет: Room предполагает, что имена свойств вашей сущности/pojo являются именами столбцов, которые вы хотите использовать. Назначение значения имени в аннотации ColumnInfo — задать имя столбца, отличное от этого свойства.   -  person Chad Mx    schedule 02.04.2018


Ответы (1)


person    schedule
comment
это даже не валидный оператор sql. - person liuyong; 12.04.2018
comment
CHANGE не является допустимой командой SQLite. Не уверен, почему это принятый ответ. Лучший способ сделать это — создать новую таблицу, скопировать данные из старой таблицы в новую новую таблицу, удалить старую таблицу, а затем переименовать новую таблицу в старую. - person crymson; 24.07.2018