Objekty entity s konstruktory musí mít také výchozí konstruktor

Má-li třída entity rozhraní JPA (Java Persistence API) konstruktor s argumenty, musí mít třída rovněž výchozí konstruktor bez argumentů. Implementace OpenJPA automaticky generuje konstruktor bez argumentů, ale implementace EclipseLink nikoli.

Toto pravidlo prochází třídy entity s anotacemi @Entity nebo @MappedSuperclass. Třídy entity s konstruktory, které nemají také konstruktor bez argumentů, jsou označeny. Rychlá oprava přidá do třídy prázdný konstruktor bez argumentů.

Pravidlo značí například následující třídu entity:

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

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

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

Rychlá oprava přidá konstruktor bez argumentů:

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

Informace o tomto problému a jiných problémech migrace OpenJPA na EclipseLink viz příručka Migrace OpenJPA na EclipseLink JPA: Mapování.