मेरे पास यह स्प्रिंग डेटा CrudRepository
है जो डीआर पर सीआरयूडी संचालन को संभालता है।वसंत क्रूड रिपोजिटरी अपवाद
@Repository
public interface IUserRepository extends CrudRepository<User, String> {
}
User
मेरी DB के एक उपयोगकर्ता तालिका के इकाई है।
delete(String ID)
findOne(String ID)
save(User user)
रूप documentation में कहा गया है, हटा सकते हैं और लगता है के संचालन के मामले में IllegalArgumentException
फेंक दिया आईडी है: CrudRepository
भंडार करने के लिए अर्थात् निम्नलिखित कार्यों कहते हैं शून्य जबकि सहेजने का ऑपरेशन कोई अपवाद नहीं फेंकता है।
समस्या यह है कि क्रूड रिपोजिटरी का जावडोक इन परिचालनों द्वारा फेंकने वाले अन्य अपवादों के बारे में कोई उल्लेख नहीं करता है। उदाहरण के लिए यह नहीं बताता है कि delete(String ID)
आपरेशन एक EmptyResultDataAccessException
मामले में प्रदान की आईडी डीबी में अस्तित्वहीन है फेंकता है।
save(User user)
आपरेशन के जावाडोक में यह स्पष्ट नहीं है जो अपवाद मामले में आप एक नया उपयोगकर्ता जो एक डेटा अखंडता बाधा (अद्वितीय क्षेत्रों और विदेशी कुंजी पर) टूट जाता है सम्मिलित फेंक दिया जाता है। इसके अलावा यह आपको चेतावनी नहीं देता है कि आप एक नया या मौजूदा उपयोगकर्ता लिख रहे हैं या नहीं: यह केवल एक नया उपयोगकर्ता बनाता है या अस्तित्व में ओवरराइट करता है (इसलिए यह एक सम्मिलित + अपडेट ऑपरेशन है)।
एक एंटरप्राइज़ एप्लिकेशन में मुझे प्रत्येक फेंकने योग्य अपवाद को पकड़ने में सक्षम होना चाहिए, एक ऑपरेशन फेंक सकता है और मुझे ऑपरेशन के जावाडोक में इसके बारे में पढ़ना चाहिए।
क्या आप क्रूड रिपोजिटरी अपवादों के बारे में कोई स्पष्ट दस्तावेज़ीकरण जानते हैं?
, धन्यवाद
आपको सभी अपवादों के लिंक की आपूर्ति करने और विस्तार से समझाते हुए उनका क्या मतलब है। –
@vtor "अंतर्निहित अपवाद अनुवाद तंत्र" से आपका क्या मतलब है। मैं उत्सुक हूं कि वसंत दस्तावेज स्पष्ट रूप से क्यों नहीं कहता है कि कुछ विधियां इस डेटाएक्सएक्सएशन को फेंकती हैं, उदाहरण के लिए क्रूड रिपोजिटरी क्लास की विधि सहेजें। – fabrik