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.
Szybka poprawka dodaje 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 public class MissingNoArgConstructorEntity { @Id private int id; public MissingNoArgConstructorEntity(int id) { this.id = id; } } |
Szybka poprawka dodaje konstruktor bezargumentowy:
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; } } |
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.