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
実行時の読み取りの一貫性は気にせず、トランザクション分離レベルをREAD_UNCOMMITTEDinsert .. select
に設定したいと考えています。
JPAで設定するにはどうすればよいですか?
アップデート
したがって、この場合、最も単純なオプションのように思われたため、通常のSQL接続を作成することになりました。みんな、ありがとう!