2015-06-19 4 views
0

У меня есть приложение, работающее на Google App Engine, которое использует JPA. Я предполагаю, что в какой-то момент, когда приложение будет развиваться, новые атрибуты будут добавлены в классы java, требующие обновления модели jpa. Как такие изменения, как правило, обрабатываются после того, как приложение находится в производстве?Обновление модели сущности JPA

Например, скажем, я добавляю новое поле (foo) в свой класс (bar), и я говорю, что foo не имеет значения NULL. В ходе транзакции EntityManager читает в старом объекте bar (до добавления foo), обновляет другое поле и пытается зафиксировать изменение, и происходит исключение. Этого я хотел бы защитить.

В целом, существует ли наилучшая практика для обновления модели jpa после ее ввода в эксплуатацию, чтобы избежать конфликтов ограничений для старых объектов, которые были сохранены?

+0

Вы имеете в виду GAE с использованием «Datastore» или appengine-sql (i.e mysql)? Если первое, то почему Hibernate помечен? –

+0

Моя ошибка, не означает, что нужно пометить hibernate, поскольку Google использует собственную реализацию JPA. Да, хранение данных в хранилище данных с использованием JPA – user1154644

ответ

0

К сожалению, модификация такой модели не является тривиальной в gae. Вам придется либо обновить все существующие сущности, либо создать «обновление по требованию», чтобы эти объекты не прерывали ваши новые условия.

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

Смежные вопросы