Los atributos con valores generados automáticamente requieren configuración

OpenJPA y EclipseLink crean tablas diferentes para generar valores para atributos que tienen la anotación @GeneratedValue o @GeneratedValue(strategy=GenerationType.AUTO). Si la aplicación contiene entidades con atributos generados por OpenJPA, persistir nuevas entidades que utilizan EclipseLink genera un error porque EclipseLink intenta generar estos valores a partir de la tabla EclipseLink.

Este problema se resuelve configurando la entidad para utilizar la tabla de secuencia OpenJPA para generar los valores del atributo. Al hacerlo, EclipseLink utiliza el último valor en la tabla OpenJPA para generar el valor del atributo.

Esta regla realiza un examen en búsqueda de atributos que están anotados con @GeneratedValue o @GeneratedValue(strategy=GenerationType.AUTO). Se proporcionará un automatizado donde sustituirá al marcado @GeneratedValue por las siguientes anotaciones:

  @TableGenerator(name = "OPENJPA_SEQUENCE_TABLE", table = "OPENJPA_SEQUENCE_TABLE", pkColumnName = "ID", valueColumnName = "SEQUENCE_VALUE", pkColumnValue = "0")
  @GeneratedValue(strategy = GenerationType.TABLE, generator = "OPENJPA_SEQUENCE_TABLE")

Por ejemplo, la regla señala la anotación @GeneratedValue en la clase de entidad de acceso de campo siguiente.

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
clase pública GeneratedValueEntity {

    @Id @GeneratedValue private int id;}

La corrección automática modificará la @GeneratedValue y añade la anotación @TableGenerator anotación.

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
clase pública GeneratedValueEntity {

    @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;}

Si desea más información sobre este problema y otros problemas de migración de OpenJPA a EclipseLink, consulte la guía Migración de OpenJPA a EclipseLink JPA: Correlaciones.