Entitätsobjekte mit Konstruktoren müssen auch einen Standardkonstruktor haben

Wenn eine Java Persistence API (JPA)-Entitätsklasse einen Konstruktor mit Argumenten hat, muss die Klasse auch einen Standardkonstuktor ohne Argumente haben. Die OpenJPA-Implementierung generiert automatisch den Konstruktor ohne Argumente, aber die EclipseLink-Implementierung nicht.

Diese Regel sucht nach Entitätsklasse mit der Annotation @Entity oder @MappedSuperclass. Entitätsklassen mit Konstruktoren, die keinen Konstruktor ohne Argumente haben, werden markiert. Die Schnellkorrektur fügt der Klasse einen Konstruktor ohne Argumente hinzu.

Die Regel markiert beispielsweise die folgende Entitätsklasse:

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

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

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

Die Schnellkorrektur fügt den Konstruktor ohne Argumente hinzu:

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

Informationen zu diesem Problem und zu weiteren Problemen bei der Migration von OpenJPA auf EclipseLink finden Sie in der Veröffentlichung OpenJPA to EclipseLink JPA Migration: Mappings.