java ee - javax.servlet.ServletException: HV000030: टाइप करने के लिए कोई वैधकर्ता नहीं मिला: java.lang.Integer




java-ee bean-validation (2)

एचवी 000030: टाइप करने के लिए कोई वैधता नहीं मिली: java.lang.Integer

ऐसा तब होगा जब आप Hibernate Validator के स्वाद में JSR303 बीन सत्यापन का उपयोग करेंगे और आपके पास अपनी जेपीए इकाई में Hibernate-specific @NotEmpty इस तरह की एक Integer संपत्ति पर है:

@NotEmpty
private Integer some;

यह पूरी तरह गलत है। एक पूर्णांक को स्ट्रिंग, संग्रह, मानचित्र या सरणी के रूप में नहीं माना जा सकता है। इसके बजाय मानक @NotNull उपयोग करें।

@NotNull
private Integer some;

कृपया ध्यान दें कि कंक्रीट समस्या जेएसएफ से पूरी तरह से असंबंधित है। भविष्य में, कृपया जितना संभव हो सके शोर को बाहर निकालना सीखें और कंक्रीट समस्या को नेलडाउन करें जैसे कि जेपीए कोड को व्यक्तिगत रूप से निष्पादित करना। जेएसएफ केवल HTTP / एमवीसी मैसेंजर है और प्राइमफेस केवल HTML / CSS / jQuery / UI कोड जनरेटर है।

मुझे अपने डेटाबेस में जानकारी अपडेट करनी है।

FacadePatient.java कक्षा कोड:

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

आप इस समस्या को नीचे के उदाहरणों में भी प्राप्त कर सकते हैं;

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

ऐसा इसलिए है क्योंकि प्रमाणीकरण समय पर 'yourEnumType' (जो पूर्णांक प्रकार का है) का क्रमिक मान स्ट्रिंग मैपिंग से पहले संसाधित किया जाता है जो हाइबरनेट डेटाबेस को मान संग्रहीत करने से पहले हल करता है।





hibernate-validator