Obiectele entitate cu constructori trebuie să aibă de asemenea un constructor implicit

Când o clasă entitate Java Persistence API (JPA) are un constructor cu argumente, clasa trebuie să aibă de asemenea un constructor implicit, fără argumente. Implementarea OpenJPA generează automat constructorul fără argumente, dar implementarea EclipseLink nu.

Această regulă scanează pentru clasele entitate cu adnotările @Entity sau @MappedSuperclass. Clasele entitate cu constructori care nu au şi un constructor fără argumente sunt semnalate. Corecţia rapidă adaugă un constructor fără argumente gol la clasă.

De exemplu, regula semnalizează următoarea clasă entitate:

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class MissingNoArgConstructorEntity {
    @Id
    private int id;

    public MissingNoArgConstructorEntity(int id) {
        this.id = id;
    }
}

Corecţia rapidă adaugă constructorul fără argumente:

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;
    } 
}

Pentru informaţii despre această problemă şi alte probleme legate de migrarea OpenJPA la EclipseLink, vedeţi ghidul OpenJPA to EclipseLink JPA Migration: Mappings.