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.

  但是我这个代码, 能满足我的需求.

 

你可能感兴趣的:(transaction)