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();
}
假如方法二中进行批量插入时发生违反唯一约束主键的异常,事务未回滚
假如在方法三中抛出异常,事务回滚 展开
// 开启事务
try{
TransactionManager.beginTransaction();
方法一;
// 普通数据库操作
方法二
;//jdbc中使用PreparedStatement 进行addBatch(),executeBatch();已设置setAutoCommit(false);
方法三
// 提交事务
TransactionManager.commitTransaction();
} catch (Exception e) {
e.printStackTrace();
TransactionManager.rollbackTransaction();
}
假如方法二中进行批量插入时发生违反唯一约束主键的异常,事务未回滚
假如在方法三中抛出异常,事务回滚 展开
4个回答
展开全部
你的setAutoCommit(false);是通过自己写代码设置的还是在TransactionManager.beginTransaction();中设置的?我看描述可能是事务这里封装的有问题或者是你用的有问题。
你搞不明白的话,可以自己去实现事务,那样逻辑比较清晰。
恩 和楼下见解一样,推荐你把TransactionManager去掉,换成 setAutoCommit(false),commit(),rollback() 试试。最原始的总是最容易理解的
你搞不明白的话,可以自己去实现事务,那样逻辑比较清晰。
恩 和楼下见解一样,推荐你把TransactionManager去掉,换成 setAutoCommit(false),commit(),rollback() 试试。最原始的总是最容易理解的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我想知道你这个 TransactionManager 是什么东西?
J2EE 中当使用 J2EE 服务器提供的 UserTransaction 时,是不能再使用 connection.setAutoCommit() 或 setSavePoint() 功能的。
如果这个 TransactionManager 是你们自己写的,那得自己检查代码是不是有缺陷。
J2EE 中当使用 J2EE 服务器提供的 UserTransaction 时,是不能再使用 connection.setAutoCommit() 或 setSavePoint() 功能的。
如果这个 TransactionManager 是你们自己写的,那得自己检查代码是不是有缺陷。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已设置setAutoCommit(false);
可能和这个有关,
TransactionManager.beginTransaction();和TransactionManager.commitTransaction();
就够了吧。
可能和这个有关,
TransactionManager.beginTransaction();和TransactionManager.commitTransaction();
就够了吧。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的问题是啥?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询