Странные вещи ... Я с удовольствием использовал EclipseLink / JPA 2 в качестве провайдера для моего модуля персистентности некоторое время (с СУБД MySQL сзади).У меня была отключена функция DDL-drop / create, так как я хотел хранить записи в БД, и в любом случае не было никаких изменений в сущностях.
Теперь я только что сделал некоторые большие изменения в одной сущности (добавление некоторых атрибутов, переименование / повторный набор других, импорт ранее встроенного объекта в эту сущность и т. д.).Я включаю DDL-drop / create, повторно развертываю пару раз, и ... ничего не меняется!
EclipseLink фактически создает (и заново создает) таблицы SQL на основе old информация!Это похоже на то, что где-то есть копия класса Java и игнорируется тот, который я только что обновил ...
Еще более сумасшедший, ранее внедренный объект исчез.Я удалил файл класса.Eclipselink still создает атрибуты в таблице ранее внедренного класса.
Я не вижу исключений в GlassFish server.log.Я бросил и воссоздал модуль сохранения, без изменений.Есть идеи?(Дайте мне знать, если я должен опубликовать какой-либо код / записи журнала, и я обновлю это сообщение.)
Обновление: После установки eclipselink.logging.level
в FINEST
я все еще вижубез исключений.DDL-скрипт создается (с неверными столбцами в нем) и успешно выполняется на БД (конечно, создавая неправильные столбцы).В журналах я вижу, что EclipseLink говорит о полях, которых там больше нет:
[#|2010-09-22T17:04:11.392+0200|CONFIG|glassfish3.0.1|org.eclipse.persistence.session.file:/Users/hank/NetBeansProjects/CoreServer/build/classes/_coreServerPersistenceUnit.ejb_or_metadata|_ThreadID=20;_ThreadName=Thread-1;|
The alias name for the entity class [class mvs.entity.Shopper] is being defaulted to: Shopper.|#]
[#|2010-09-22T17:04:11.392+0200|CONFIG|glassfish3.0.1|org.eclipse.persistence.session.file:/Users/hank/NetBeansProjects/CoreServer/build/classes/_coreServerPersistenceUnit.ejb_or_metadata|_ThreadID=20;_ThreadName=Thread-1;|
The column name for element [field msisdn] is being defaulted to: MSISDN.|#]
[#|2010-09-22T17:04:11.392+0200|CONFIG|glassfish3.0.1|org.eclipse.persistence.session.file:/Users/hank/NetBeansProjects/CoreServer/build/classes/_coreServerPersistenceUnit.ejb_or_metadata|_ThreadID=20;_ThreadName=Thread-1;|
The column name for element [field imei] is being defaulted to: IMEI.|#]
В этом случае mvs.entity.Shopper
- это класс.msisdn
- это существующее поле, но imei
больше не существует.Не знаю, откуда EclipseLink получает информацию от ...
Кстати, у меня eclipselink.weaving
установлено на false
, так как это вызывало проблемы с отложенной загрузкой.Может ли это быть связано?
Обновление 2: Следуя совету Гордона, я искал старые копии сущности, но не мог их найти.Развертывание приложения на свежем GlassFish не показывало поведение сверху;вместо этого было сделано правильное отображение , как при создании DDL!Йиппи:)
Мой единственный вывод - старая копия должна храниться где-то в GlassFish, даже после ее удаления ... Имеет ли это смысл?