jpa - कॉलबैक ईवेंट पर स्वचालित बीन मान्यकरण निष्पादित करते समय बीन मान्यकरण बाध्यता(एस) का उल्लंघन: 'प्रीपेर्सिस्ट'




java-ee bean-validation (3)

मैंने अपनी संस्था को बचाने के लिए अपने नेटबीन 7 में एक ईजेबी सत्र मुखौटा बनाया। मेरे पास मेरे बीमा और रेटपेनल क्लास के बीच बहुत सारे मैपिंग हैं I

public class Insurance{
    @ManyToOne(optional=false) 
    @JoinColumn(name="PLAN_ID")
    private RatePlan plan;
}
public class RatePlan{
    @OneToMany(mappedBy="plan")
    private Set<Insurance> insuranceItems;
}

जब मैंने अपने ईजेबी सत्र बीन का उपयोग करते हुए अपने डेटाबेस में सहेजने की कोशिश की तो मुझे त्रुटि का सामना करना पड़ रहा है।

द्वारा कारण: javax.validation.Constraint उल्लंघन: एक्सपेंशन: कॉलबैक ईवेंट पर स्वचालित बीन मान्यकरण निष्पादित करते समय बीन मान्यकरण बाधाओं का उल्लंघन किया गया था: 'प्रीपेरिस्ट' विवरण के लिए एम्बेडेड प्रतिबंध उल्लंघन देखें।

मैंने क्या किया मेरी बीन सत्यापन को मेरी Persistence.xml फ़ाइल में बंद करना था मैं जानना चाहूंगा कि बीन सत्यापन त्रुटि क्या हुई है, लेकिन मैं नहीं जानता कि यह कैसे और कैसे खोज सकता है या इसे कैसे कॉन्फ़िगर और पकड़ना है I

मेरी ईजेबी मुखौटा टिस की तरह एक साधारण वर्ग है

public class InsuranceFacade{
    public void saveInsurance(Insurance insurance){
        em.persist(insurance);
    }
}

कोई संकेत?


मैं जानना चाहूंगा कि बीन सत्यापन त्रुटि क्या हुई है, लेकिन मैं नहीं जानता कि यह कैसे और कैसे खोज सकता है या इसे कैसे कॉन्फ़िगर और पकड़ना है I

यह पता करने के लिए कि किस प्रकार विशिष्ट बाधा का उल्लंघन हुआ है, आप अपवाद पकड़े गए ConstraintLiolationException.getConstraintViolations () एक सेट का बंधन उल्लंघन है जो आप दोहरा सकते हैं और निरीक्षण कर सकते हैं।


निम्नलिखित अपवाद को पकड़ो जहां आप संस्था को जारी रखते हैं मेरे मामले में ईजेबी में विधि जोड़ें। जहां मैं कर रहा हूँ em.persist() तब सर्वर लॉग की जांच करें, आप देखेंगे कि कौन-सी विशेषता उल्लंघन का उल्लंघन करती है

catch (ConstraintViolationException e) {
       log.log(Level.SEVERE,"Exception: ");
       e.getConstraintViolations().forEach(err->log.log(Level.SEVERE,err.toString()));
    }

catch (EJBException e) {
        @SuppressWarnings("ThrowableResultIgnored")
        Exception cause = e.getCausedByException();
        if (cause instanceof ConstraintViolationException) {
            @SuppressWarnings("ThrowableResultIgnored")
            ConstraintViolationException cve = (ConstraintViolationException) e.getCausedByException();
            for (Iterator<ConstraintViolation<?>> it = cve.getConstraintViolations().iterator(); it.hasNext();) {
                ConstraintViolation<? extends Object> v = it.next();
                System.err.println(v);
                System.err.println("==>>"+v.getMessage());
            }
        }
        Assert.fail("ejb exception");
    }