O OpenJPA e o EclipseLink criam diferentes tabelas para gerar valores para atributos que possuem a anotação @GeneratedValue ou @GeneratedValue(strategy=GenerationType.AUTO).
Se o seu aplicativo contém entidades com atributos que foram gerados pelo OpenJPA, persistir novas
entidades usando o EclipseLink causa um erro porque o EclipseLink tenta gerar estes valores a partir da tabela EclipseLink.
Este problema é resolvido ao configurar a entidade para usar a tabela de sequências OpenJPA para gerar os valores do atributo. Ao fazer isso, o EclipseLink usa o último valor listado na tabela OpenJPA para gerar o valor do atributo.
Esta regra faz a varredura para encontrar atributos que não estão anotados com @GeneratedValue ou @GeneratedValue(strategy=GenerationType.AUTO).
Será fornecida uma automatização onde ela substituirá o sinalizador @GeneratedValue com as seguintes anotações:
@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 exemplo, a regra sinaliza a anotação @GeneratedValue na classe de entidade de
acesso ao campo a seguir.
import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity classe pública GeneratedValueEntidade { @Id @GeneratedValue private int id;}
A correção automatizada modificará a anotação @GeneratedValue e adiciona a anotação @TableGenerator anotação.
import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity classe pública GeneratedValueEntidade { @Id @TableGenerator(nome = "OPENJPA_SEQUENCE_TABLE", tabela = "OPENJPA_SEQUENCE_TABLE", pkColumnName = "ID", valueColumnName = "SEQUENCE_VALUE", pkColumnValue = "0") @GeneratedValue(estratégia = GenerationType.TABLE, gerador = "OPENJPA_SEQUENCE_TABLE") ID private int ;}
Para obter informações sobre esse problema e outros problemas de migração do OpenJPA para o EclipseLink, consulte o guia Migração do OpenJPA para o EclipseLink JPA: mapeamentos.