Перенести внедренный объект в отдельную таблицу. Комната - PullRequest
0 голосов
/ 26 мая 2020

CertificateElementEntity объект имеет встроенный класс ImgData.

Я разделил CertificateElementEntity и ImageData на отдельные таблицы.

Но теперь я не могу понять, как для выполнения миграции.

open class CertificateElementEntity(
@IgnoreJson
@PrimaryKey
@ColumnInfo(name = "local_id")
var localId: Long? = null,
var data: String? = null,
var imageData: ImgData? = null) 

Может быть, кто-то сделал аналогичные миграции

1 Ответ

0 голосов
/ 26 мая 2020

Вы можете попробовать эту общую схему миграции (честно говоря, я не испытывал такой миграции, поэтому, возможно, есть способ попроще):

  1. Создать временную таблицу [CertificateElementEntityTemp] с такой же структурой .
  2. Скопируйте все данные из таблицы [CertificateElementEntity] в [CertificateElementEntityTemp].
  3. Удалите таблицу [CertificateElementEntity].
  4. Создайте таблицу [ImgData].
  5. Создайте таблицу [CertificateElementEntity] с новой структурой (только с imageId вместо всех полей из встроенной таблицы). Создайте внешний ключ для [imageId].
  6. Скопируйте необходимые данные из [CertificateElementEntityTemp] в [ImgData].
  7. Скопируйте необходимые данные из [CertificateElementEntityTemp] в [CertificateElementEntity].
  8. Удалите таблицу [CertificateElementEntityTemp].

Все это, конечно, вы должны записать в разделе миграции с эквивалентными SQL операторами.

...