コンストラクターを持つエンティティー・オブジェクトにはデフォルトのコンストラクターも必要である

Java Persistence API (JPA) エンティティー・クラスが引数付きコンストラクターを持つ場合、そのクラスは、引数なしのデフォルトのコンストラクターも持つ必要があります。 OpenJPA 実装環境では引数なしコンストラクターが自動的に生成されますが、EclipseLink 実装環境では生成されません。

この規則は、@Entity アノテーションまたは @MappedSuperclass アノテーションを持つエンティティー・クラスをスキャンします。コンストラクターを持つエンティティー・クラスのうち、引数なしコンストラクターを持たないものにフラグが立てられます。 クイック・フィックスにより、空の引数なしコンストラクターがそのクラスに追加されます。

例えば、この規則は以下のエンティティー・クラスにフラグを立てます。

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

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

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

クイック・フィックスにより、以下のように、引数なしコンストラクターが追加されます。

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

この問題や、OpenJPA から EclipseLink へのマイグレーションに関するその他の問題については、 OpenJPA to EclipseLink JPA Migration: Mappings ガイドを参照してください。