2013-06-12 14 views
23

muszę aktualizować informacje w mojej bazy danych.javax.servlet.ServletException: HV000030: Nie walidator można znaleźć na typ: java.lang.Integer

FacadePatient.java kod klasy:

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; 
} 
+0

OK, więc w czym problem, że otrzymujesz wyjątek sprawdzania poprawności lub nie wiesz od czego zacząć? – JoshDM

+0

daje ten błąd: javax.validation.UnexpectedTypeException: HV000030: Nie można znaleźć walidatora dla typu: java.lang.Integer, –

+0

Zmieniłem również atrybut Typ z liczby całkowitej na ciąg, ale ten sam błąd –

Odpowiedz

97

HV000030: Nie walidator można znaleźć na typ: java.lang.Integer

To będzie się działo podczas korzystania fasoli JSR303 w walidacji Smak Hibernującego Validatora i masz w jednostce JPA specyficzną dla Hibernacji specyfikację @NotEmpty dla właściwości Integer podobnej do poniższej:

@NotEmpty 
private Integer some; 

Jest to całkowicie błędne. Liczba całkowita nie może być traktowana jako string, collection, map or array. Zamiast tego użyj standardu @NotNull.

@NotNull 
private Integer some; 

Należy zauważyć, że konkretny problem jest całkowicie niezwiązany z JSF. W przyszłości dowiedz się, jak wykluczyć jak największy hałas i zagrożenie związane z konkretnym problemem, np. wykonywanie kodu WZP indywidualnie. JSF jest tutaj jedynie komunikatorem HTTP/MVC, a PrimeFaces jest jedynie generatorem kodu HTML/CSS/jQuery/UI.

+1

Cóż, mam ten sam błąd w innym (ale bardzo głupim) scenariuszu: '@Pattern (regexp =" [1-9] [0-9] {9} ", \t \t \t message =" Telefon liczby są 10-cyfrowy numer ") \t private int PhoneNumber;' -> skorygowane jedynie poprzez: 'prywatne PhoneNumber String;' –

+0

Ten sam błąd występuje z @Size (max = 2). Z jakiegoś powodu Apache MyFaces 2.2 pokazuje błąd w okienku alertu w mojej aplikacji JSF, podczas gdy Oracle nie ma takiego Mojarra. –

+0

@Stephan: Tak się stanie, gdy zostanie zgłoszony wyjątek podczas ** zapytania ** ** (sprawdź dzienniki serwera!). Mojarra pokazuje tylko ten alert na etapie rozwoju. Ten problem nie jest związany z pytaniem, które jest obecnie zadawane. Zobacz także a.o. http://stackoverflow.com/questions/27526753/exception-stack-trace-in-jsf-ajax-requests/ – BalusC

9

Chciałbym dodać do powyższej odpowiedzi. Wyjątek ten będzie także wyrzucony, gdy masz kilka rzeczy, na przykład tak:

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

Mam ten błąd w tej samej sytuacji. Ale dlaczego otrzymujemy ten błąd. Ponieważ wcześniej działał w moim projekcie. Później mam ten błąd z powodu @Size. – Hema

0

może pojawić się ten problem również w przypadkach takich jak poniżej;

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

To dlatego, że w czasie walidacji porządkowa wartość „yourEnumType” (można z całkowitą rodzaju) jest przetwarzany przed mapowania Hibernate String który rozwiązuje przed przechowywania wartości w bazie danych.

Powiązane problemy