您可能已经开始了一笔交易,并尝试开始另一笔交易而没有提交或回滚上一笔交易。使用程序化事务划分时的惯用法如下:
try { sess.getTransaction().begin(); // do some work sess.getTransaction().commit()}catch (RuntimeException e) { sess.getTransaction().rollback(); throw e;}这很麻烦且容易出错,这就是为什么使用EJB或Spring具有声明式事务如此有用的原因之一。



