java – JPA和MySQL事务隔离级别
发布时间:2020-12-15 08:33:45 所属栏目:Java 来源:网络整理
导读:我有一个本地查询,可以批量插入 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
我有一个本地查询,可以批量插入
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(...); } 此查询导致死锁:当它使用insert .. select从t2读取时,另一个进程尝试在t2中插入一行. 执行插入时,我不关心从t2读取的一致性.选择并希望将事务隔离级别设置为READ_UNCOMMITTED. 我如何在JPA中设置它? 更新 所以我最终为这种情况创建了一个常规的SQL连接,因为在我看来这是最简单的选择.感谢大家! 解决方法
您需要在连接级别设置它,从entitymanager获取会话并执行以下操作:
org.hibernate.Session session = (Session)entityManager.getDelegate(); Connection connection = session.connection(); connection.setTransactionIsolation(Connection.READ_UNCOMMITTED); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 网易NAPM Andorid SDK实现原理--转
- jdbc 使用PreparedStatement来存储和读取大数据(Blob或Clob
- 我们真的需要在java RMI中创建Stub吗?
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(81)-数据筛选(万
- springboot中如何通过cors协议解决跨域问题
- 用于文本/字符串处理的Java库,与unix / linux实用程序类似
- java – Eclipse插件 – 在Eclipse中打开编辑器时的通知
- Java 冒泡排序算法
- java – 将自定义对象绑定到JMS MapMessage
- tomcat点击startup.bat一闪而退的方法