Вопрос
Я использую 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
У меня есть это свойство, установленное в True:
openjpa.NontransactionalWrite : true
Любые подсказки?!
Решение
Вы не можете автоматически совершать с JPA. Если вы хотите удалить меневерное управление транзакциями, используйте JTA / CMT или SPRING, управляемые транзакциями.
Другие советы
Насколько я знаю, OpenJPA использует значение AutoCommit из базового подключения. Но это явно устанавливает автопробуй на ложь всякий раз, когда вы начинаете транзакцию.
Вы можете проверить базовое соединение со следующим кодом:
OpenJPAEntityManager oem = OpenJPAPersistence.cast(em);
Connection conn = (Connection) oem.getConnection();
boolean autoCommit = conn.getAutoCommit();
Не связан с StackOverflow