سؤال
أنا أستخدم OpenJPA وأريد تكوينه لاستخدام AutoCommit في كل عملية كتابة/إدراج.
في الوقت الحالي ، يجب أن أفعل هذا:
MyEntity e = new MyEntity();
em.getTransaction().begin();
em.persist(e);
em.getTransaction().commit();
ما أريد أن أكون قادرًا على فعله هو:
MyEntity e = new MyEntity();
em.persist(e); // auto commit here
لدي هذا الخاصية تم تعيينه على صحيح:
openjpa.NontransactionalWrite : true
أي أدلة؟!
المحلول
لا يمكنك تلبية تلقائيًا مع JPA. إذا كنت ترغب في إزالة إدارة المعاملات المحلية ، فاستخدم معاملات JTA/CMT أو الربيع المدارة.
نصائح أخرى
على حد علمي ، يستخدم OpenJPA قيمة AutoCommit من الاتصال الأساسي. لكنه يعين صراحة التلقائي على خطأ كلما بدأت معاملة.
يمكنك التحقق من الاتصال الأساسي بالرمز التالي:
OpenJPAEntityManager oem = OpenJPAPersistence.cast(em);
Connection conn = (Connection) oem.getConnection();
boolean autoCommit = conn.getAutoCommit();
لا تنتمي إلى StackOverflow