У меня есть собственный запрос, который выполняет пакетную вставку в базу данных MySQL:
String sql = "insert into t1 (a, b) select x, y from t2 where x = 'foo'";
EntityTransaction tx = entityManager.getTransaction();
try {
tx.begin();
int rowCount = entityManager.createNativeQuery(sql).executeUpdate();
tx.commit();
return rowCount;
}
catch(Exception ex) {
tx.rollback();
log.error(...);
}
Этот запрос вызывает взаимоблокировку: пока он читает из t2
с insert .. select
, другой процесс пытается вставить строку в t2
.
Меня не волнует согласованность операций чтения из t2
при выполнении insert .. select
, и я хочу установить уровень изоляции транзакции на READ_UNCOMMITTED .
Как мне настроить его в JPA?
Обновление
Так что в итоге я создал обычное соединение SQL для этого случая, так как мне показалось, что это самый простой вариант. Спасибо всем!