2012-10-30 16 views
5

मैं जेबरा का उपयोग हाइबरनेट के साथ कर रहा हूं, मैं डाटाबेस में 100 रिकॉर्ड डालना चाहता हूं, मान लीजिए मुझे 50 वें रिकॉर्ड सम्मिलन में अपवाद जेडीबीसी बैच अपडेट प्राप्त होता है, मुझे अपवाद को संभालने की आवश्यकता है और मुझे शेष रिकॉर्ड जारी रखने की आवश्यकता है डीबी के लिए।अपवाद होने पर थोक प्रविष्टियों को कैसे जारी रखें

कोड:

private List<TempCustomers> tempCustomer =new ArrayList<TempCustomers>(); 

    public String migrateCustomers() { 

     TempCustomers temp = null; 
     for(DoTempCustomers tempCustomers:doTempCustomers){ 

       try { 
       temp=new TempCustomers(); 
       BeanUtils.copyProperties(temp, tempCustomers); 
         tempCustomer.add(temp); 
        entityManager.persist(temp); 


       }catch (Exception e) { 
        tempCustomer.add(temp); 
        entityManager.persist(temp); 
        log.info("Exception ..."+e); 
        return "null"; 
       } 
     } 


     return "null"; 
    } 
+0

जवाब देने के लिए धन्यवाद, मान लीजिए कि सूची से 100 रिकॉर्ड पढ़ना है, तो मैं इकाई प्रबंधक का उपयोग कर जारी रखूंगा। प्रबंधक (temp) .. जिसमें एक रिकॉर्ड सूचीबद्ध नहीं है, इसलिए जेडीबीसी बैच अपवाद के माध्यम से हाइबरनेट करें। समय रिकॉर्ड 99 रिकॉर्ड मैं डेटाबेस स्टोर करना चाहता हूं, मैं इसे कैसे कर सकता हूं? – nag

+0

हाँ .. रस, मुझे अपवाद पकड़ने और जारी रखने के लिए नामकरण करने की आवश्यकता है। यह कैसे कर सकता है? – nag

+1

यह 'log.info कभी नहीं करें ("अपवाद ..." + ई);' ... यह स्टैक ट्रेस निगलता है। इसके बजाय, 'log.info ("अपवाद ...", ई) का उपयोग करें;' पैरामीटर – artbristol

उत्तर

0

नागेन्द्र।

श्री आरएएस क्या कह रहा है वह सही है।

उदाहरण के लिए आप 100 इकाइयां बना रहे हैं और 50 वीं इकाई में अपवाद जारी है। आपके पास अपवाद हैंडलर है जो स्थिति को संभालने के लिए आपके लिए काम करेगा। यह वर्तमान को छोड़ देगा और अगले को संसाधित करेगा।

बातें इस प्रकार देखभाल करने के लिए:

1- आपका अपवाद संचालन पाश के भीतर होना चाहिए, आशा है कि आप पहले से ही पास है।

2- अपवाद के लिए आप त्रुटि विवरण के लिए आगे विश्लेषण के लिए इकाई को अलग-अलग सूची में सहेज सकते हैं। अपवाद पकड़ ब्लॉक में यह करो।

3- मुझे यकीन नहीं है कि आप लेनदेन प्रबंधक का उपयोग कर रहे हैं या नहीं, लेनदेन की देखभाल करने की आवश्यकता है।

-

+0

रुद्र के रूप में अपवाद के साथ, मैं उपरोक्त कोड temp द्वारा दूसरे मामले को कैसे प्राप्त कर सकता हूं, कस्टमर सूची इकाई objec (temp) में जोड़ा गया है, यह अपवाद देता है केवल जब entityManager.persist (temp) कथन, क्या आप इसके लिए नमूना कोड बना सकते हैं? – nag

0

2 मामले लाइन निकाल दें में ...

entityManager.persist (अस्थायी);

जैसा कि आप पहले ही जानते हैं कि यह अपवाद फेंकता है। इसे अपने आगे के विश्लेषण के लिए सूची में रखें। बेहतर आप तक किसी भी कतार (ActiveMQ) में डाल दिया।

इस लिए सबसे अच्छा समाधान फिर से है:

मान्य सभी अपने डेटा से पहले जारी रहती है ... अपवाद कम करने के लिए। रनटाइम चीजों को फिर से पुनः प्रोसेसिंग की आवश्यकता होती है और यह मैन्युअल होना चाहिए।

+0

चेतावनी के रूप में, अपनी वेबसाइट से लिंक करने वाले फ़ूटर का उपयोग न करें, या आपके उत्तरों को स्पैम के रूप में फ़्लैग किया जा सकता है। –

संबंधित मुद्दे