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

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

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

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

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

@Entity
公開クラス MissingNoArgConstructorエンティティー {
    @Id private int id; public MissingNoArgConstructorエンティティー (int id) { this.id = id;
    }} (})

自動修正では、引数なしのコンストラクタが追加される:

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

@Entity
公開クラス MissingNoArgConstructorエンティティー {
    @Id private int id; public MissingNoArgConstructorEntity () {
    } public MissingNoArgConstructorエンティティー (int id) { this.id = id;
    }} (})

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