Google App Engine - Изменить пакет для постоянного класса - PullRequest
2 голосов
/ 08 мая 2011

Мое приложение GWT развернуто в Google App Engine для Java. Я сохранил экземпляры класса в хранилище данных движка приложений. Теперь я хочу переместить этот класс в другой пакет, но это приводит к проблемам при десериализации существующих объектов.

Итак, есть ли способ перенести класс в новый пакет? Я не против обновить существующие объекты, если это поможет мне достичь моей цели.

Спасибо.

1 Ответ

2 голосов
/ 08 мая 2011

Так я бы переместил мой .package.Clazz в свой. новый .package.Clazz.Основная идея состоит в том, чтобы выполнить миграцию через третий «временный» класс (в данном случае TempClazz):

  • создать новый класс my.package.TempClazz (НЕ просто переименовывать Clazz)

  • создайте вспомогательный метод, который будет считывать все существующие сущности Clazz из хранилища данных, затем копировать данные в новый экземпляр TempClazz и сохранять сущности TempClazz в хранилище данных.

  • теперь разверните в GAE и запустите вспомогательный метод для копирования ваших сущностей Clazz в сущности TempClazz.

  • , если это сработало.Удалите Clazz-entity.

  • далее, в основном, повторите процесс, за исключением того, что на этот раз вы фактически реорганизуете my.package.Clazz в новый пакет my. new .package.Clazz.Итак, на данный момент у вас будет два класса: my.package.TempClazz и my. new .package.Clazz.

  • все, что осталось сделать, это сновапрочитайте TempClazz из хранилища данных и скопируйте каждый в сущность Clazz.

Довольно сложный процесс.Может кто знает более простой способ?

...