Gli attributi di entità non annotati richiedono un'annotazione Transient

In OpenJPA, gli attributi che sono essi stessi delle classi di entità non sono conservati per impostazione predefinita. EclipseLink ha un comportamento predefinito differente e tenta di conservare questi attributi nel database. Per adottare il comportamento di OpenJPA, che ignora gli attributo entità non annotati, aggiungere l'annotazione javax.persistence.Transient a tali attributi in EclipseLink.

Questa regola contrassegna gli attributi senza annotazioni JPA che sono classi di entità. Se lo strumento non trova la classe di riferimento, registra un avviso nel log degli errori di Eclipse. Lo strumento potrebbe non trovare la classe se i progetti o le classi dipendenti non sono accessibili o se vi sono errori di compilazione. La correzione rapida aggiunge l'annotazione @Transient all'attributo.

Nella classe di entità seguente, il campo entityReference viene contrassegnato dalla regola.

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

La correzione rapida aggiunge l'annotazione @Transient e l'istruzione import.

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

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

Per informazioni su questo problema e altri problemi della migrazione da OpenJPA a EclipseLink, consultare la guida OpenJPA to EclipseLink JPA Migration: Mappings.