Obiekty Entity z konstruktorami, muszą mieć również konstruktor domyślny

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.