spring事务 TransactionTemplate 怎样实现多次提交?

yao_r1984 2008-11-05 09:42:13
各位大侠,spring 事务 TransactionTemplate 怎样实现多次提交啊。
导入数据,因为数据量比较大,所以打算1000条提交一次,但我用getTransactionTemplate().getTransactionManager().commit(status)提交后status的iscompleted就变成true了,再次提交的话,就报Transaction is already completed - do not call commit or rollback more than once per transaction这个错了。哪位大哥指点下,非常感谢啊!
...全文
1323 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
tixiang_han 2011-02-11
  • 打赏
  • 举报
回复
将status重置就可以了,我已经试验了。
goosman 2008-11-05
  • 打赏
  • 举报
回复
呵呵,你看看sunyujia的博客里有个还hibernate清白的那个文章.
事务不是由hibernate控制的,事务是由你的Connection控制的,你拿到Connection对象之后,setAutoCommit(false).
fosjos 2008-11-05
  • 打赏
  • 举报
回复
循环调事务方法吧

每次用sublist分离出1000条
laorer 2008-11-05
  • 打赏
  • 举报
回复
http://www.javaeye.com/post/62866

这个你看看,估计用不上
你把代码帖出来看看
yao_r1984 2008-11-05
  • 打赏
  • 举报
回复
回1楼,怎样重新启动该事务呢?
回2楼,TransactionStatus没有status的set方法,它的实现类也只有将false改为true的,没有将status改为false的
FAT0708 2008-11-05
  • 打赏
  • 举报
回复
提交后再次设置status的状态为false
laorer 2008-11-05
  • 打赏
  • 举报
回复
你看这样行不行,每到1000条,就提交,然后重新启动事务,
ZA_cameron 2008-11-05
  • 打赏
  • 举报
回复
mark
FAT0708 2008-11-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yao_r1984 的回复:]
回1楼,怎样重新启动该事务呢?
回2楼,TransactionStatus没有status的set方法,它的实现类也只有将false改为true的,没有将status改为false的
[/Quote]

DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = transactionManager.getTransaction(def);//设为false

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧