"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जेपीए 2.0/हाइबरनेट में फ़ील्ड्स के संयोजनों को कैसे सत्यापित करें?

जेपीए 2.0/हाइबरनेट में फ़ील्ड्स के संयोजनों को कैसे सत्यापित करें?

2024-11-11 को प्रकाशित
ब्राउज़ करें:663

How to Validate Combinations of Fields in JPA 2.0/Hibernate?

जेपीए 2.0/हाइबरनेट में फ़ील्ड्स के संयोजनों को मान्य करना

जेपीए 2.0/हाइबरनेट सत्यापन का उपयोग करते समय, ऐसे परिदृश्यों का सामना करना संभव है जहां का सत्यापन एकाधिक फ़ील्ड का संयोजन आवश्यक है. उदाहरण के लिए, फ़ील्ड getValue1() और getValue2():

public class MyModel {
    public Integer getValue1() {
        //...
    }
    public String getValue2() {
        //...
    }
}

यदि getValue1() और getValue2() दोनों शून्य हैं, तो मॉडल को अमान्य माना जाना चाहिए, जो अमान्य डेटा दर्शाता है।

वर्ग-स्तरीय बाधाएं: समाधान

ऐसे सत्यापनों को संभालने के लिए, जेपीए 2.0/हाइबरनेट वर्ग-स्तरीय बाधाएं प्रदान करता है। ये बाधाएँ व्यक्तिगत गुणों के बजाय संपूर्ण वर्ग उदाहरण पर लागू होती हैं। यह दृष्टिकोण परस्पर संबंधित क्षेत्रों को मान्य करने में लचीलापन प्रदान करता है। इस बाधा को किसी विशिष्ट संपत्ति के बजाय वर्ग पर लागू करने के लिए @Target को ElementType.TYPE पर सेट करें:

@Constraint(validatedBy = MultiCountryAddressValidator.class) @लक्ष्य(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) सार्वजनिक @इंटरफ़ेस पताअनोटेशन { स्ट्रिंग संदेश() डिफ़ॉल्ट "{error.address}"; कक्षा>[] समूह() डिफ़ॉल्ट { }; कक्षा पेलोड>[] पेलोड() डिफ़ॉल्ट { } का विस्तार करता है; }

Validator को कार्यान्वित करना

@Constraint(validatedBy = MultiCountryAddressValidator.class)
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface AddressAnnotation {
    String message() default "{error.address}";
    Class>[] groups() default { };
    Class extends Payload>[] payload() default { };
}

पब्लिक क्लास मल्टीकंट्रीएड्रेसवैलिडेटर ConstraintValidator को लागू करता है। ... // सत्यापन तर्क को परिभाषित करने के लिए isValid() विधि लागू करें }

इस कार्यान्वयन में, आप ऑब्जेक्ट इंस्टेंस (इस मामले में पता) के कई फ़ील्ड तक पहुंच सकते हैं और आवश्यक सत्यापन नियम लागू कर सकते हैं।

public class MultiCountryAddressValidator implements ConstraintValidator {
    ...
    // Implement the isValid() method to define the validation logic
}

अंत में, अपने MyModel क्लास को एड्रेसएनोटेशन के साथ एनोटेट करें:

@AddressAnnotation सार्वजनिक वर्ग MyModel { ... }

कक्षा-स्तरीय बाधाओं का उपयोग करके, आप हाइबरनेट सत्यापन का उपयोग करके मजबूत और लचीले तरीके से फ़ील्ड के संयोजन को प्रभावी ढंग से मान्य कर सकते हैं।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3