hibernate - Transaction not successfully started
今天在测试 transaction(使用事务进行管理)的时候, 总报错: Transaction not successfully started
可能有多种原因, 这位哥们总结得很好: Transaction not successfully started
我的原因是, 将进行commit提交后,再rollback.
正确的做法, 应该是先rollback, 如下是完整的代码:
@Test public void saveTest() { Boolean prepared = false; SessionFactory factory = null; Session s = null; Transaction t = null; try { factory = HibernateUtil.getSessionFactory(); s = factory.getCurrentSession(); t = s.beginTransaction(); Monitor m = new Monitor(); m.setFenceId("9f005029-7c0d-45d3-96c1-006d1cf94332"); m.setIMEI("862950025795124"); m.setAlllowStatus("锁"); Date now = new Date(); m.setAllowFrom(now); m.setAllowTo(now); s.save(m); prepared = false; //表示事务的前一部分还没做好准备. //若前一部分的事务还没准备好,则整个事务取消. if(!prepared) { if(null != t) { System.out.println("try rollback..."); t.rollback(); } } } catch (Exception e) { if(t != null) t.rollback(); }finally { //在finally中进行提交. if(null != t) t.commit(); } }
暂时还没有好的解决方案, 因为文档的例子, 是在catch exception的时候, rollback, 而在try 语句中进行commit.
但是我这个代码, 能满足我的需求.