Я научился играть, следуя руководству на их веб-сайте по созданию небольшого движка для блогов.
Он использует JPA и при загрузке вызывает Fixtures.Deletemodels (), (или что-то в этом роде).
Он в основном уничтожает все таблицы при каждом запуске, и я теряю все данные.
Я развернул производственную систему вроде (без оператора nuke).
Теперь мне нужно развернуть большое обновление в производственной системе. Многие классы были изменены, добавлены и удалены. При локальном тестировании, не разбирая таблицы в каждом цикле, я столкнулся с проблемами синхронизации. Когда я пытался писать или читать из таблиц, игра приводила к ошибкам. Я открыл MySQL и, конечно же, в некоторых случаях таблицы были изменены только частично и неправильно. Даже если в моей конфигурации для режима DDL установлено «создание», JPA не может «понять», как согласовать изменения и изменить мою схему соответствующим образом.
Так что я должен вернуться в оператор начальной загрузки, который уничтожает все мои таблицы.
Итак, я начал изучать эволюцию базы данных в Play и читал статью на веб-сайте Play Framework об эволюции базы данных. В статье говорилось о скриптах версий, но говорилось: «Если вы работаете с JPA, Hibernate может автоматически обрабатывать эволюции баз данных. Эволюции полезны, если вы не используете JPA».
Так что, если JPA должен позаботиться об этом для меня, как мне развернуть большие обновления в большом приложении Play? До сих пор JPA не смог правильно внести изменения в схему, и приложение будет выдавать ошибки. Я не заинтересован в потере всех моих данных, поэтому исправление dev "Fixtures.deleteModels ()" не может быть использовано в prod.
Заранее спасибо,
Джош