В OpenJPA те атрибуты, которые сами представляют собой классы сущностей, по умолчанию не сохраняются.
В EclipseLink по умолчанию применяется другой принцип работы: эти атрибуты сохраняются в базе данных.
Для того чтобы сохранить такой режим работы, как в OpenJPA, то есть
игнорировать атрибуты сущностей без аннотаций, добавьте аннотацию
javax.persistence.Transient к этим атрибутам в EclipseLink.
Это правило отмечает атрибуты без аннотаций JPA, которые являются классами сущностей.
Если инструменту не удается найти связанный класс, он добавляет предупреждение в протокол ошибок Eclipse. Класс может быть не найден, если зависимые проекты или классы недоступны, либо
есть ошибки компиляции.
Автоматическое исправление добавит аннотацию @Transient к атрибуту.
В следующем классе сущности правило отметит поле entityReference.
import javax.persistence.Entity; import javax.persistence.Id; @Entity public class EntityA { @Id private int id; private EntityB entityReference; }
import javax.persistence.Entity; import javax.persistence.Id; @Entity public class EntityB { @Id private int id; }
Автоматическое исправление добавит аннотацию @Transient и оператор импорта.
import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Transient; @Entity public class EntityA { @Id private int id; @Transient private EntityB entityReference; }
Для получения дополнительной информации об этой проблеме и других проблемах, возникающих при миграции OpenJPA в EclipseLink, обратитесь к руководству Миграция OpenJPA в EclipseLink JPA: преобразования.