Os objetos de entidade com construtores também devem ter um construtor padrão

Quando uma classe de entidade de API de Persistência Java (JPA) possui um construtor com argumentos, a classe também deve ter um construtor sem argumento padrão. A implementação OpenJPA automaticamente gera o construtor sem argumento, mas a implementação EclipseLink não.

Esta regra faz a varredura para encontrar classes de entidade com as anotações @Entity ou @MappedSuperclass. Classes de entidade com construtores que também não possuem um construtor sem argumento são sinalizadas. A correção rápida inclui um construtor sem argumento vazio na classe.

Por exemplo, a regra sinaliza a classe de entidade a seguir:

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

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

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

A correção rápida inclui o construtor sem argumento:

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

Para obter informações sobre esse problema e outros problemas de migração do OpenJPA para o EclipseLink, consulte o guia Migração do OpenJPA para o EclipseLink JPA: mapeamentos.