का उपयोग करके नेस्टेड लेनदेन को बचाने के लिए रोलबैक कैसे करें मेरे पास डेटाबेस से कनेक्ट करने के लिए हाइबरनेट का उपयोग कर जावाईई एप्लिकेशन है। मेरे आवेदन के कुछ हिस्सों में मैंने उस विधि को कॉल किया है जिसमें @Transactional
एनोटेशन है। इनमें से कुछ मामलों में, मैं पूरे लेनदेन (बाहरी सेवा-विधि कॉल, और आंतरिक) को रोलबैक करना चाहता हूं। और कुछ मौकों पर मैं आंतरिक सेवा की शुरुआत में केवल आंतरिक सेवा-विधि कॉल (यानी savepoint पर रोलबैक रोलबैक करना चाहता हूं)।हाइबरनेट
पहला भाग पहले से ही मौजूद है, लेकिन मुझे दूसरी समस्या है। जब मैं निम्नलिखित करता हूं, तो मुझे संदेश के साथ "अप्रत्याशित रोलबैक अपवाद" मिलता है "लेनदेन वापस लुढ़का क्योंकि इसे केवल रोलबैक के रूप में चिह्नित किया गया है"।
@Service
public class OuterService{
@AutoWired
private InnerServcie innerService;
@Transactional
public void outer(){
try{
innerService.inner();
}catch(RuntimeException e){
//if i dont throw this up, it will give me the "UnexpectedRollbackException"
System.out.println("I cought a RuntimeException");
}
}
}
@Service
public class InnerServcie{
@Transactional
public void inner(){
//here we insert some data into db using hibernate
//but something goes wrong and an exception is thrown
}
}
मैं भीतरी विधि को यह जोड़ा, और मैं एक गतिरोध प्राप्त करें! कोई विचार? – hfm