jpa eclipselink изменить тип поля - PullRequest
1 голос
/ 29 октября 2011

Я делаю свои первые шаги с развитием JPA (eclipselink), и мне интересно, есть ли полезная практика, которая может помочь отразить изменения, внесенные в сущность в базу данных, без воссоздания всей базы данных,

В моем случае у меня более 30 сущностей, некоторые из них «правильно» определены и уже содержат строки данных в базе данных, но я понял, что допустил ошибку при определении некоторыхдругие объекты, используя тип int для первичного ключа вместо long, и хуже всего то, что некоторые из этих объектов отображаются другими объектами, что означает, что они используются в качестве внешних ключей ... Так что мне интересно, есть лилюбой «правильный» способ справиться с этим без необходимости заново создавать всю базу данных.Пересоздание базы данных заставит меня много раз заново заполнять строки уже заполненных таблиц и талии.

Заранее спасибоGeorge

Ответы [ 2 ]

2 голосов
/ 30 октября 2011

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

JPA - это просто способполучить доступ к базе данных.База данных не должна создаваться движком JPA.Вы можете сделать это, но вы не обязаны это делать.Вы можете делать то, что вы хотите с вашей базой данных, используя SQL, и делать то, что вы хотите с вашим кодом Java.Если они оба отображаются вместе при запуске приложения, оно будет работать.

0 голосов
/ 30 октября 2011

Вы можете обновить свою текущую схему автоматически, чтобы отразить изменения, которые вы сделали в модуле, настроив EclipseLink следующим образом:

<property name="eclipselink.ddl-generation" value="create-tables" />

Для крупных модификаций вашей модели это не гарантирует надлежащего обновления схемы, но для меньших это должно работать хорошо.

...