2013-08-11 11 views
6

आशावादी लॉक अपवाद के बजाय मेरे ऐप में एक StaleObjectStateException फेंक दिया जा रहा है (जैसा कि मैंने पढ़ा है मुझे यह उम्मीद करनी चाहिए) जब मेरे ऐप में आशावादी समेकन समस्या होती है। कोड पोस्ट करने की कोई आवश्यकता नहीं है, क्योंकि यह सबसे बुनियादी सहमति समस्या है - टाइमस्टैम्प कॉलम में गलत संस्करण।StaleObjectStateException vs OptimisticLockException

मुझे आशावादी लॉक अपवाद कैसे प्राप्त करना चाहिए, दूसरा नहीं?

उत्तर

7

जब आप सीधे हाइबरनेट एपीआई का उपयोग करते हैं तो StaleObjectStateException फेंक दिया जाता है। यदि आप जेपीए स्टाइल हाइबरनेट का इस्तेमाल करते हैं तो OptimisticLockException फेंक दिया जाता है। यह आप भ्रमित हैं कृपया इसे पढ़ें: अन्य लेनदेन आप पहले अपडेट किया गया है (इसलिए बनाया नया संस्करण) वस्तु की वजह से

try { 
    // your hibernate operation here 
} catch (OptimisticLockException e) { 
    // do something (eg: inform user update is conflicting) 
} 

यह OptimisticLockException टिप्पण होते हैं लायक है: What's the difference between JPA and Hibernate?

उपयोग अपवाद को पकड़ने के लिए कैच ब्लॉक की कोशिश ऐसा करने का मौका मिला। एक यूआई आवेदन में यह उपयोगकर्ता संकेत करने के लिए आम है अधिलेखित करने के लिए है कि क्या/त्यागने/वस्तु

+1

मुझे पता है कि अपवाद कैसे प्राप्त करें :) समस्या यह है कि यहां एक अलग अपवाद फेंक दिया जा रहा है। जैसा कि मैंने प्रलेखन और पुस्तकों में पढ़ा है, आशावादी लॉक अपवाद आशावादी समेकन के मामले में फेंक दिया जाना चाहिए। मुझे इसके बजाय StaleObjectStateException मिल रहा है। मैं दूसरा चाहता हूँ! : डी –

+1

जब आप सीधे हाइबरनेट एपीआई का उपयोग करते हैं तो StaleObjectStateException फेंक दिया जाता है। OptimisticLockException यह है कि यदि आपने जेपीए स्टाइल हाइबरनेट का उपयोग किया था। यदि यह आपको भ्रमित करता है तो कृपया पढ़ें: http://stackoverflow.com/questions/9881611/whats-the-difference-between-jpa-and-hibernate – gerrytan

1

हाइबरनेट 3.5.2 के अपने विश्लेषण के रूप में की उसकी/उसके संस्करण विलय (अब पुराना सा), मैं उन्हें कभी-कभी OptimisticLockException फेंक पाया और कभी-कभी StaleObjectStateException। बैच ऑपरेशंस भी StaleStateException फेंक देते हैं, जो StaleObjectStateException का सुपरक्लास है, लेकिन इकाई का उदाहरण नहीं है।

ऐसा लगता है कि मुझे एक अधूरा रिफैक्टरिंग के रूप में लगता है, आपको शायद दोनों को पकड़ने और उसी तरह प्रतिक्रिया करने की आवश्यकता है।