Când o clasă entitate Java Persistence API (JPA) are un constructor cu argumente, clasa trebuie să aibă de asemenea un constructor implicit, fără argumente. Implementarea OpenJPA generează automat constructorul fără argumente, dar implementarea EclipseLink nu.
Această regulă scanează pentru clasele entitate cu adnotările @Entity sau @MappedSuperclass. Clasele entitate cu constructori care nu au şi un constructor fără argumente sunt semnalate.
Soluția automată va adăuga clasei un constructor gol fără argument.
De exemplu, regula semnalizează următoarea clasă entitate:
import javax.persistence.Entity; import javax.persistence.Id; @Entity clasă publică MissingNoArgConstructorEntity { @Id int privat id; public MissingNoArgConstructorEntity(int id) { acest.id = id; } }
Soluția automată va adăuga constructorul fără argument:
import javax.persistence.Entity; import javax.persistence.Id; @Entity clasă publică MissingNoArgConstructorEntity { @Id privat int id; public MissingNoArgConstructorEntity() { } public MissingNoArgConstructorEntity(int id) { acest.id = id; } }
Pentru informaţii despre această problemă şi alte probleme legate de migrarea OpenJPA la EclipseLink, vedeţi ghidul OpenJPA to EclipseLink JPA Migration: Mappings.