Lorsqu'une classe entité JPA (Java Persistence API) comporte un constructeur avec des arguments, elle doit également inclure un constructeur par défaut sans argument. L'implémentation OpenJPA génère automatiquement le constructeur sans argument, contrairement à l'implémentation EclipseLink.
Cette règle recherche des classes entité définies avec les annotations @Entity ou @MappedSuperclass. Les classes entité comportant des constructeurs mais non également associées à un
constructeur sans argument sont marquées.
Le correctif rapide ajoute un constructeur sans argument vide à la classe.
Par exemple, la règle marque la classe entité suivante :
import javax.persistence.Entity; import javax.persistence.Id; @Entity public class MissingNoArgConstructorEntity { @Id private int id; public MissingNoArgConstructorEntity(int id) { this.id = id; } } |
Le correctif rapide ajoute le constructeur sans 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; } } |
Pour des informations sur ce problème et d'autres problèmes de migration d'OpenJPA vers EclipseLink, voir le guide OpenJPA to EclipseLink JPA Migration: Mappings.