it-swarm.com.de

javax.servlet.ServletException: HV000030: Für den Typ: Java.lang.Integer wurde kein Prüfer gefunden

Ich muss Informationen in meiner Datenbank aktualisieren.

FacadePatient.Java Klassencode:

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: Es wurde kein Validator für Typ gefunden: Java.lang.Integer

Dies geschieht, wenn Sie die JSR303-Bean-Validierung nach Hibernate Validator verwenden und in Ihrer JPA-Entität den Hibernate-spezifischen @NotEmpty für eine Integer-Eigenschaft wie die folgende verwenden: 

@NotEmpty
private Integer some;

Das ist völlig falsch. Eine Ganzzahl kann nicht als Zeichenfolge, Sammlung, Karte oder Array betrachtet werden. Verwenden Sie stattdessen den Standard @NotNull.

@NotNull
private Integer some;

Bitte beachten Sie, dass das konkrete Problem völlig unabhängig von JSF ist. Lernen Sie in Zukunft, wie Sie so viel Lärm wie möglich ausschließen und das konkrete Problem durch z. den JPA-Code einzeln ausführen. JSF ist hier lediglich der HTTP/MVC-Messenger und PrimeFaces ist lediglich der HTML/CSS/jQuery/UI-Code-Generator.

104
BalusC

Ich möchte die obige Antwort hinzufügen .. Diese Ausnahmebedingung würde auch ausgelöst werden, wenn Sie beispielsweise Folgendes haben:

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

Dieses Problem kann auch in den folgenden Fällen auftreten.

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

Dies liegt daran, dass der Ordinalwert von 'yourEnumType' (der ganzzahlige Typ ist) zur Validierungszeit vor dem String-Mapping verarbeitet wird, das Hibernate auflöst, bevor der Wert in der Datenbank gespeichert wird.

3
Bell Katapa

Wenn eine Einschränkung vorhanden ist, die für eine ganze Zahl nicht gültig ist, wird dieser Fehler ausgegeben. Wie Annotieren einer Ganzzahl mit:

  • @Länge (max = 3)
  • @Größe
0
cabaji99