首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring事务不能工作- JDBCTemplate正在读取未提交的数据

Spring事务不能工作- JDBCTemplate正在读取未提交的数据
EN

Stack Overflow用户
提问于 2016-07-24 15:22:09
回答 1查看 566关注 0票数 1

下面的方法插入两个记录(但此时不提交它们),然后尝试从前面的语句中读取一个未提交的记录。我用事务包装了代码,并将isolationLevel设置为"READ_COMMITTED“,但这似乎行不通。read/"SELECT“语句正在读取未提交的记录。

这怎麽可能?我哪里出问题了?请看下面的代码,帮我解决问题。我真的很感激~

注:

我正在使用BoneCP来获取DataSource。dbConnectionPool.initConnectionPool(dbName),将取一个BoneCPDataSource。

@Override void testDBCalls() { definition.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);dataSource DataSource = dBConnectionPool.getDataSource("titans");DefaultTransactionDefinition定义=新DefaultTransactionDefinition();definition.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);definition.setIsolationLevel(TransactionDefinition.ISOLATION_REPEATABLE_READ);definition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);DataSourceTransactionManager txManager = new DataSourceTransactionManager(dataSource);TransactionStatus transactionStatus = txManager.getTransaction( definition );尝试{ jdbcTemplate JdbcTemplate =新的JdbcTemplate(dataSource);String sql =“插入地下水(external_id,source_type )值(12,13);";jdbcTemplate.update(sql);System.out.println(”成功插入- 1");字符串sql2 =“插入地下水(external_id,source_type)值(123,45);”jdbcTemplate.update(sql2);System.out.println(“成功插入- 2");String sql3 =”从地下水中选择external_id= 123;";System.out.println(“结果:"+jdbcTemplate.queryForInt(sql3));txManager.commit(transactionStatus);System.out.println(”完成交易.“);} catch (异常e) { e.printStackTrace();txManager.rollback(transactionStatus);System.out.println(“回滚事务”);}}最后{ dataSource.getConnection().close();System.out.println(“关闭连接.”);} catch (SQLException e) { e.printStackTrace();}}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-10 09:09:24

正如@M.Denium在评论中解释的那样,我试图从单个事务中完成所有事情。隔离级别是为了保持不同事务之间的一致性。我还在学习这些概念,所以我把它看错了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38553615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档