У меня есть собственный запрос, который выполняет пакетную вставку в базу данных 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-соединение для этого случая, как мне показалось самым простым вариантом. Всем спасибо!