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 automatica aggiungerà alla classe un costruttore vuoto e privo di argomenti.
Ad esempio, la regola contrassegna la classe di entità seguente:
importa javax.persistence.Entity; Importazione javax.persistence.Id; @Entity Classe pubblica MissingNoArgConstructorEntità { @Id private int id; public MissingNoArgConstructorEntity (int id) { this.id = id; }}
La correzione automatica aggiungerà il costruttore senza argomenti:
importa javax.persistence.Entity; Importazione javax.persistence.Id; @Entity Classe pubblica MissingNoArgConstructorEntità { @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.