Atributos de entidade não anotados requerem uma anotação Transiente

No OpenJPA, os atributos que em si são classes de entidade não são persistidos por padrão. O EclipseLink possui um comportamento padrão diferente e tenta persistir estes atributos para o banco de dados. Para manter o comportamento do OpenJPA de ignorar os atributos de entidade não anotados, inclua a anotação javax.persistence.Transient nestes atributos no EclipseLink.

Esta regra sinaliza atributos sem nenhuma anotação JPA que são classes de entidade. Se a ferramenta não puder localizar a classe referenciada, ela registra um aviso no log de erros do Eclipse. A ferramenta não pode localizar a classe se projetos ou classes dependentes não estiverem acessíveis ou houver erros de compilação. A correção rápida inclui a anotação @Transient no atributo.

Na classe de entidade a seguir, o campo entityReference é sinalizado pela regra.

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

A correção rápida inclui as anotações @Transient e a instrução import.

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

@Entity
public class EntityA {
    @Id
    private int id;
   
    @Transient
    private EntityB entityReference;
}

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.