मान लीजिए, ए प्रकार की वस्तुएं डीबी में संग्रहीत हैं।हाइबरनेट: जांचें कि ऑब्जेक्ट मौजूद है
org.hibernate.Session session = ...;
long id = 1;
A obj = session.load(A.class, id);
आईडी = 1 के साथ वस्तु मौजूद नहीं है मैं ObjectNotFoundException मिल जाएगा: यहाँ जिस तरह से मैं डीबी से विशिष्ट एक हाइबरनेट का उपयोग करके लोड है। लेकिन क्या यह जांचने का कोई तरीका है कि अपवाद को पकड़ने के बिना ऐसी वस्तु मौजूद है या नहीं?
org.hibernate.Session session = ...;
long id = 1;
boolean exists = session.exists(A.class, id);
if(exists){
// do smth.....
}
यह डॉक्स हाइबरनेट नहीं मिल सका ...
उत्पादन कर सकते हैं के साथ इस्तेमाल किया जा सकता हम्म ... मैं अभी भी एक ही बात (ObjectNotFoundException) कोई बात नहीं मैं चाहे मिल "लोड" या "प्राप्त करें" का प्रयोग करें। –
शायद आपको पिछले सत्र से एक अपवाद मिल रहा है .load()? ऑब्जेक्ट नॉटफाउंड अपवाद के लिए दस्तावेज़ों से: "यह अपवाद तब नहीं फेंक दिया जा सकता है जब लोड() को कॉल किया जाता है क्योंकि लोड() संभव होने पर प्रॉक्सी लौटाता है। डीबी में कोई पंक्ति मौजूद है या नहीं, यह जांचने के लिए सत्र.get() का उपयोग करें।" – Juanma
काम करता है लेकिन यह धीमा दृष्टिकोण है क्योंकि हाइबरनेट को सभी कॉलम लाने होंगे और उन्हें नए ऑब्जेक्ट पर प्रभावित करना होगा और सत्र में इसे स्टोर करना होगा। यदि आप संसाधनों को बेकार तरीके से बर्बाद नहीं करना चाहते हैं, तो इसके बजाय एचक्यूएल दृष्टिकोण पर विचार करें। –