का उपयोग नहीं कर सकता है मेरे पास मेरे गैर-ईजेबी एप्लिकेशन में निम्न कोड कैसे है। कोड काम करता है।एक जेटीए EntityManager getTransaction()
@Override
public void saveItems(Collection<T> items) {
synchronized (em) {
EntityTransaction tx = em.getTransaction();
try {
tx.begin();
for (T item : items) {
saveItem_((Class<T>) null, item);
}
tx.commit();
} finally {
if (tx.isActive()) {
tx.rollback();
}
}
}
}
एक नया आवेदन में मैं EJB3 + JSF उपयोग कर रहा हूँ और इसके बाद के संस्करण कोड युक्त पुस्तकालय का फिर से उपयोग करना चाहते हैं। नए आवेदन के लिए मेरे peristence इकाई इस तरह दिखता है:
<persistence-unit name="myApp" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>MySQLConnection</jta-data-source>
</persistence-unit>
मेरा नया आवेदन जब यह इस लाइन हिट एक अपवाद फेंक:
EntityTransaction tx = em.getTransaction();
अपवाद है:
A JTA EntityManager cannot use getTransaction()
है कौन सा पर्याप्त रूप से स्पष्ट। प्रश्न यह है कि मैं कंटेनर द्वारा प्रबंधित लेनदेन करने के लिए अपने कोड को कैसे परिवर्तित करूंगा। संभवतः मेरे बीन तरीकों को उचित रूप से एनोटेट करने की आवश्यकता है ... सवाल यह है कि कैसे?
तो यहां समाधान क्या है? – rtcarlson
@rtcarlson क्यों डाउनवॉट किया गया है और मैंने 'पोस्टट्रांसक्शन' इंटरफ़ेस का उपयोग करने के लिए अपनी पोस्ट में साफ़ नहीं किया है। –
@downvoter यदि आप समझा नहीं सकते और समझ नहीं सकते हैं, तो बिना किसी कारण के डाउनवोट करें। –