Jeśli klasa jednostki interfejsu API Java Persistence (JPA) ma konstruktor z argumentami, klasa ta musi mieć również bezargumentowy konstruktor domyślny. Implementacja OpenJPA automatycznie generuje konstruktor bezargumentowy, ale implementacja EclipseLink tego nie robi.
Ta reguła przeprowadza skanowanie w poszukiwaniu klas jednostki z adnotacją @Entity lub @MappedSuperclass. Klasy jednostki z konstruktorami, które nie mają również konstruktora bezargumentowego, zostają oznaczone.
Automatyczna poprawka doda do klasy pusty konstruktor bezargumentowy.
Na przykład reguła oznacza następującą klasę jednostki:
import javax.persistence.Entity; import javax.persistence.Id; @Entity klasa publiczna MissingNoArgConstructorEntity { @Id private int id; public MissingNoArgConstructorEntity (int id) { this.id = id; } }
Automatyczna poprawka doda konstruktor bezargumentowy:
import javax.persistence.Entity; import javax.persistence.Id; @Entity klasa publiczna MissingNoArgConstructorEntity { @Id private int id; public MissingNoArgConstructorEntity () { } public MissingNoArgConstructorEntity (int id) { this.id = id; } }
Informacje na ten temat oraz na temat innych problemów z migracją interfejsu OpenJPA do interfejsu EclipseLink zawiera podręcznik Migracja interfejsu JPA ze środowiska OpenJPA do EclipseLink: Odwzorowania.