Изменение проблемы классов сущностей при разработке для app-engine - PullRequest
2 голосов
/ 28 февраля 2011

Моя проблема довольно очевидна:

  1. У меня был класс с именем TaskDescription, который соответствовал виду (таблице) в хранилище данных App Engine. Затем я переименовал его в TaskContent, и теперь все сохраненные данные, похоже, утеряны (поскольку имя класса, так называемое имя kind, является частью пути к хранимым данным).
  2. Я понимаю, что почти одна и та же проблема будет возникать каждый раз, когда я переименовываю одно поле в любом классе сущностей.

Ничто не идеально в этом мире, и я сомневаюсь, что можно создавать все и абсолютно правильные объекты с нуля и никогда не менять их после этого.

Итак, как бороться с этой проблемой?

1 Ответ

2 голосов
/ 28 февраля 2011

Два способа:

  1. Оставьте сущности такими, какие они есть, и измените отображение: в objectify вы можете установить для сущности отображение имени класса : например, @Entity (name = "EntityName").

  2. Изменить объекты в хранилище данных: поскольку хранилище данных не имеет схемы, это нельзя сделать простой командой.Для изменения имени объекта необходимо создать новый объект, скопировать все свойства и удалить старый объект.Люди обычно используют задания MapReduce для обслуживания хранилища данных .Вот MapReduce для Java .

Для изменений имени поля в objectify есть явная поддержка для миграции схем (схемы отсутствуют, но они по-прежнему вызываютэто так).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...