У меня была похожая проблема, но я думаю, что ее немного сложнее решить. Я использую JPA на стороне сервера, а сервер на самом деле является поставщиком веб-услуг.
Постоянство управляется контейнером, и, согласно настройкам моего приложения, оно использует стратегию «Создать». Конечно, каждый раз, когда я изменяю свои сущности и заново внедряю приложение, оно вызывает много исключений.
В конце концов я решил создать / перенести существующую базу данных в отдельный процесс. Это чтение метаданных, связанных с сущностями, и сравнение их с текущей базой данных.
После этого он создает сценарий миграции на тот случай, если схема БД отличается, чтобы она соответствовала новой схеме без потери какой-либо информации (сложность создания сценария миграции зависит от того, как вы планируете обрабатывать такие случаи, как изменения типов данных или удаление атрибутов ). Последний шаг - это повторное развертывание приложения (в вашем случае запустите его).
Я бы предложил упреждающий подход, при котором вы не ждете выдачи исключения, а пытаетесь угадать изменения до запуска приложения.