2009-08-07 12 views
6

मैं एक स्प्रिंग एप्लिकेशन लिख रहा हूँ, और यह कि जब मैं डेटाबेस त्रुटियों में चलाने, कभी कभी हाइबरनेट के ConstraintViolationException फेंक दिया जाता है लगता है और कभी कभी वसंत के DataIntegrityViolationException फेंक दिया है। क्या कोई कारण फेंक दिया जा सकता है और दूसरा नहीं? क्या उनका मतलब अलग-अलग चीजें हैं?ConstraintViolationException वी.एस. DataIntegrityViolationException

उत्तर

4

आप HibernateTemplate के माध्यम से हाइबरनेट कॉल पर अमल करते हैं, तो वसंत वसंत अपवाद पदानुक्रम (जैसे DataIntegrityViolationException) में किसी भी हाइबरनेट अपवाद (जैसे ConstraintViolationException) अनुवाद कर देगा। यदि आप HibernateTemplate का उपयोग नहीं करते हैं, तो देशी हाइबरनेट अपवादों के माध्यम से जाना होगा। दोनों RuntimeExceptions हैं, इसलिए स्पष्ट अपवाद हैंडलिंग की आवश्यकता नहीं है, इसलिए यह हमेशा स्पष्ट नहीं होता कि आप कौन सी देखने जा रहे हैं।

+0

मैं 'हाइबरनेट टेम्पलेट 'का उपयोग नहीं कर रहा हूं, फिर भी प्राथमिक कुंजी का उल्लंघन होने पर मुझे वसंत के रैपर अपवाद मिलते हैं। अन्य अद्वितीय कुंजी उल्लंघनों के परिणामस्वरूप हाइबरनेट के अपवाद में। कोड समान है - केवल उस कुंजी का प्रकार जो उल्लंघन मामलों को प्राप्त करता है। –

+0

क्या आप अपने डीएओ पर @ रिपोजिटरी एनोटेशन का उपयोग कर रहे हैं? – cyotee

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