У всех сущностей должен быть первичный ключ

В 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: преобразования.