java jdbc addBatch批处理不回滚

假如代码是这样的//开启事务try{TransactionManager.beginTransaction();方法一;//普通数据库操作方法二;//jdbc中使用Pre... 假如代码是这样的
// 开启事务
try{
TransactionManager.beginTransaction();
方法一;
// 普通数据库操作
方法二
;//jdbc中使用PreparedStatement 进行addBatch(),executeBatch();已设置setAutoCommit(false);
方法三
// 提交事务
TransactionManager.commitTransaction();
} catch (Exception e) {
e.printStackTrace();
TransactionManager.rollbackTransaction();
}

假如方法二中进行批量插入时发生违反唯一约束主键的异常,事务未回滚
假如在方法三中抛出异常,事务回滚
展开
 我来答
桂镶桖28
2013-11-12 · TA获得超过593个赞
知道小有建树答主
回答量:307
采纳率:0%
帮助的人:207万
展开全部
你的setAutoCommit(false);是通过自己写代码设置的还是在TransactionManager.beginTransaction();中设置的?我看描述可能是事务这里封装的有问题或者是你用的有问题。

你搞不明白的话,可以自己去实现事务,那样逻辑比较清晰。

恩 和楼下见解一样,推荐你把TransactionManager去掉,换成 setAutoCommit(false),commit(),rollback() 试试。最原始的总是最容易理解的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jamxval
推荐于2018-04-06 · TA获得超过6821个赞
知道大有可为答主
回答量:4308
采纳率:82%
帮助的人:1375万
展开全部
我想知道你这个 TransactionManager 是什么东西?

J2EE 中当使用 J2EE 服务器提供的 UserTransaction 时,是不能再使用 connection.setAutoCommit() 或 setSavePoint() 功能的。

如果这个 TransactionManager 是你们自己写的,那得自己检查代码是不是有缺陷。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乌微月2S
推荐于2016-10-09 · TA获得超过5037个赞
知道大有可为答主
回答量:5361
采纳率:42%
帮助的人:2847万
展开全部
已设置setAutoCommit(false);

可能和这个有关,
TransactionManager.beginTransaction();和TransactionManager.commitTransaction();

就够了吧。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0adf2dfc62
2013-11-11 · TA获得超过578个赞
知道小有建树答主
回答量:553
采纳率:50%
帮助的人:211万
展开全部
你的问题是啥?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式