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