Quando una classe di entità un JPA (Java Persistence API) ha un costruttore con argomenti, la classe deve avere anche un valore predefinito, costruttore senza argomenti. L'implementazione di OpenJPA genera automaticamente il costruttore senza argomenti, al contrario dell'implementazione EclipseLink.
Questa regola ricerca le classi di entità con le annotazioni @Entity o @MappedSuperclass. Vengono contrassegnate le classi di entità con i costruttori che non hanno anche un costruttore senza argomenti.
La correzione rapida aggiunge un costruttore senza argomenti vuoto alla classe.
Ad esempio, la regola contrassegna la classe di entità seguente:
import javax.persistence.Entity; import javax.persistence.Id; @Entity public class MissingNoArgConstructorEntity { @Id private int id; public MissingNoArgConstructorEntity(int id) { this.id = id; } } |
La correzione rapida aggiunge il costruttore senza argomenti:
import javax.persistence.Entity; import javax.persistence.Id; @Entity public class MissingNoArgConstructorEntity { @Id private int id; public MissingNoArgConstructorEntity() { } public MissingNoArgConstructorEntity(int id) { this.id = id; } } |
Per informazioni su questo problema e altri problemi della migrazione da OpenJPA a EclipseLink, consultare la guida OpenJPA to EclipseLink JPA Migration: Mappings.