javax.persistence.EntityNotFoundException
से बचने का कोई और शानदार तरीका है जब EntityManager.remove()
पर किसी ऑब्जेक्ट पर कॉल किया जा रहा है जो वर्तमान में लगातार स्थिति में मौजूद हो या नहीं हो सकता है? मैं ऐसी परिस्थिति से बचने की कोशिश कर रहा हूं जहां मुझे ऑब्जेक्ट को हटाने के लिए 2 प्रश्न बनाने की आवश्यकता है। वर्तमान में मैं के साथ धोखा दे रहा हूँ:हाइबरनेट Entitymanager अपवाद के बिना खूबसूरती से हटा दें?
void remove(String id) {
T model = entityManager.getReference(type, id);
entityManager.remove(model);
}
लेकिन अगर मॉडल मौजूद नहीं है यह एक अपवाद फेंक देते हैं।
मैं कर सकता:
void remove(String id) {
T model = retrieve(id);
if(model != null)
entityManager.remove(model);
}
लेकिन वह (अब के लिए अलग एक कैश की धारणा की स्थापना) 2 प्रश्नों शामिल होगा।
मैं अपवाद को पकड़ने के लिए वोट देता हूं। लोगों के कहने के बावजूद, जिस तरह से सूर्य ने जावा मुख्य एपीआई को प्रोग्राम किया है, कई बार सामान्य निष्पादन के दौरान प्रयास करने का प्रयास बिल्कुल ठीक है। बस दूसरे दिन मुझे 'classLoader.loadClass()' पंक्ति * 2 9 4 में एक * बहुत * कोर क्लास में अपेक्षित अपवाद को दूर करने की कोशिश की गई। –
मुझे लगता है कि एक अपवाद एक MySQL डीबी पर एक अतिरिक्त क्वेरी की तुलना में तेज़/तेज होने की संभावना है। – Finbarr
यदि आपके पास ऑब्जेक्ट संदर्भ आसान है, तो बस entityManager.contains (obj) पर कॉल करें - यदि यह गलत लौटाता है, तो आप इसे पहले ही हटा चुके हैं। (यह काम नहीं करेगा यदि आपके पास केवल आईडी है, या हो सकता है कि इसे एक अलग पर्सिस्टेंस संदर्भ में हटा दिया हो, जाहिर है, इस मामले में एक जेपीक्यूएल डिलीट कथन काम करेगा। – JesperSM