web-dev-qa-db-fra.com

javax.servlet.ServletException: HV000030: aucun validateur n'a été trouvé pour le type: Java.lang.Integer

Je dois mettre à jour les informations dans ma base de données.

FacadePatient.Java code de classe:

public Patient update(Patient p) {

    Patient pat = em.find(Patient.class, p.getPatientId());
    p.setPatientPhone(pat.getPatientPhone());
    p.setPatientDateNaiss(pat.getPatientDateNaiss());
    p.setPatientEmail(pat.getPatientEmail());
    p.setPatientJob(pat.getPatientJob());
    p.setPatientSmoking(pat.getPatientSmoking());
    p.setPatientSize(pat.getPatientSize());
    em.merge(pat);
    return p;
}
30
Héla

HV000030: Aucun validateur n'a été trouvé pour le type: Java.lang.Integer

Cela se produira lorsque vous utiliserez la validation de bean JSR303 dans la version de Hibernate Validator et que vous aurez dans votre entité JPA le @NotEmpty spécifique à Hibernate sur une propriété Integer comme ceci: 

@NotEmpty
private Integer some;

C'est complètement faux. Un entier ne peut pas être considéré comme un chaîne, collection, carte ou tableau . Utilisez plutôt le @NotNull standard.

@NotNull
private Integer some;

Veuillez noter que le problème concret n’a absolument aucun rapport avec JSF. À l'avenir, veuillez apprendre à exclure autant que possible le bruit et résoudre le problème concret, par exemple. exécuter le code JPA individuellement. JSF est simplement le messager HTTP/MVC et PrimeFaces est simplement le générateur de code HTML/CSS/jQuery/UI.

104
BalusC

Je voudrais ajouter à la réponse ci-dessus . Cette exception serait également levée lorsque vous avez quelque chose comme par exemple:

@Size(min = 1, max = 20)
@Column(name = "ID")
private int id;
14
kamel2005

Vous pouvez également rencontrer ce problème dans les cas suivants:

@Size(max = 45, message = "Field 'SomeEntityClass.yourEnumType' cannot exceed 45 characters") @Column(length=45)
@Enumerated(EnumType.STRING)
private SomeEnumType yourEnumType;

En effet, au moment de la validation, la valeur ordinale de 'yourEnumType' (qui est de type entier) est traitée avant le mappage de chaîne résolu par Hibernate avant de stocker la valeur dans la base de données.

3
Bell Katapa

De plus, si une contrainte non valide pour un entier est présente, cette erreur sera renvoyée. Comme annoter un entier avec:

  • @Longueur (max = 3)
  • @Taille
0
cabaji99