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 ガイドを参照してください。