В OpenJPA классы сущностей разрешено определять без первичного ключа, в случае чего генерируется первичный ключ по умолчанию ID.
В EclipseLink все классы сущностей должны иметь атрибут, определенный как
первичный ключ с помощью аннотации @Id, @EmbeddedId или @IdClass.
Это правило проверяет классы сущностей на наличие атрибута с аннотацией @Id, @EmbeddedId или @IdClass.
В те классы, у которых нет атрибута с такой аннотацией, необходимо добавить атрибут ID, использующий сгенерированный в OpenJPA столбец для этой сущности.
Это правило может проверить только сущности, содержащиеся в одном классе.
Если класс сущности расширяет другие классы сущностей или суперклассы, то это правило не отмечает отсутствующие первичные ключи.
Если у вас возникнет исключительная ситуация времени выполнения, аналогичная указанной ниже, значит не задан первичный ключ:
Описание исключительной ситуации: не задан первичный ключ для класса сущности [класс org.apache.openjpa.persistence.annotations.EntityA].
В нем должен быть определен @Id, @EmbeddedId или @IdClass.
Если первичный ключ был определен с помощью одной из этих аннотаций, убедитесь
в том, что в иерархии класса сущности не используется смешанный тип доступа
(аннотации для свойств и полей).
В следующем классе сущности правило отметит аннотацию Entity.
import javax.persistence.Entity; @Entity public class EntityNoId { } |
Для того чтобы задать первичный ключ, добавьте атрибут с аннотацией.
import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.TableGenerator; @Entity public class EntityNoId { @Id @TableGenerator(name = "OPENJPA_SEQUENCE_TABLE", table = "OPENJPA_SEQUENCE_TABLE", pkColumnName = "ID", valueColumnName = "SEQUENCE_VALUE", pkColumnValue = "0") @GeneratedValue(strategy = GenerationType.TABLE, generator = "OPENJPA_SEQUENCE_TABLE") private int id; } |
Для получения дополнительной информации о проблемах, возникающих при миграции OpenJPA в EclipseLink, обратитесь к руководству Миграция OpenJPA в EclipseLink JPA: преобразования.