Má-li třída entity rozhraní JPA (Java Persistence API) konstruktor s argumenty, musí mít třída rovněž výchozí konstruktor bez argumentů. Implementace OpenJPA automaticky generuje konstruktor bez argumentů, ale implementace EclipseLink nikoli.
Toto pravidlo prochází třídy entity s anotacemi @Entity nebo @MappedSuperclass. Třídy entity s konstruktory, které nemají také konstruktor bez argumentů, jsou označeny.
Rychlá oprava přidá do třídy prázdný konstruktor bez argumentů.
Pravidlo značí například následující třídu entity:
import javax.persistence.Entity; import javax.persistence.Id; @Entity public class MissingNoArgConstructorEntity { @Id private int id; public MissingNoArgConstructorEntity(int id) { this.id = id; } } |
Rychlá oprava přidá konstruktor bez argumentů:
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; } } |
Informace o tomto problému a jiných problémech migrace OpenJPA na EclipseLink viz příručka Migrace OpenJPA na EclipseLink JPA: Mapování.