В OpenJPA считается, что атрибуты, наследующие интерфейс
java.util.Collection<E>, по умолчанию не относятся к
сохраняемому типу, поэтому они не хранятся постоянно, если не имеют аннотации.
В EclipseLink по умолчанию применяется другой принцип работы: эти атрибуты сохраняются в базе данных.
Для того чтобы сохранить такой режим работы, как в OpenJPA, то есть
игнорировать атрибуты коллекции без аннотаций, добавьте аннотацию
javax.persistence.Transient к этим атрибутам в EclipseLink.
Это правило отмечает атрибуты без аннотаций JPA, наследующих интерфейс java.util.Collection<E>, включая следующие субинтерфейсы:
В следующем классе сущности правило отметит атрибуты collectionField и listField.
импорт java.util.Collection; импорт java.util.List; импорт javax.persistence.Entity; импорт javax.persistence.Id; @Entity общедоступный класс UnannotatedCollectionEntity { @Id частная id; частное Collection collectionField; частное List listField; }
Автоматическое исправление добавит аннотацию @Transient и оператор импорта.
импорт java.util.Collection; импорт java.util.List; импорт javax.persistence.Entity; импорт javax.persistence.Id; импорт javax.persistence.Transient; @Entity общедоступный класс UnannotatedCollectionEntity { @Id частная id; @Transient частное Collection collectionField; @Transient частное List listField; }
Для получения дополнительной информации об этой проблеме и других проблемах, возникающих при миграции OpenJPA в EclipseLink, обратитесь к руководству Миграция OpenJPA в EclipseLink JPA: преобразования.