最近在学Hibernate时, 发现事务操作的rollback()在try, catch, finally中的位置不同会有影响:
try{
session = HibernateSessionFactory.getSession();
ts = session.beginTransaction();
session.save(book);
id = book.getBookid();
ts.commit();
}catch(HibernateException e){
throw e;
}finally{
if(ts != null){
ts.rollback();
}
HibernateSessionFactory.closeSession();
}
上面的代码rollback()在finally中, 运行时会有如下错误:
Exception in thread "main" org.hibernate.TransactionException: Transaction not successfully.而下面把rollback()写在catch中却能正常工作:
try{
session = HibernateSessionFactory.getSession();
ts = session.beginTransaction();
session.save(book);
id = book.getBookid();
ts.commit();
}catch(HibernateException e){
if(ts != null){
ts.rollback();
}
throw e;
}finally{
HibernateSessionFactory.closeSession();
}这是为什么呢? 求大牛解答疑惑啊!
Hibernatetransactionrollback
try{
session = HibernateSessionFactory.getSession();
ts = session.beginTransaction();
session.save(book);
id = book.getBookid();
ts.commit();
}catch(HibernateException e){
throw e;
}finally{
if(ts != null){
ts.rollback();
}
HibernateSessionFactory.closeSession();
}
上面的代码rollback()在finally中, 运行时会有如下错误:
Exception in thread "main" org.hibernate.TransactionException: Transaction not successfully.而下面把rollback()写在catch中却能正常工作:
try{
session = HibernateSessionFactory.getSession();
ts = session.beginTransaction();
session.save(book);
id = book.getBookid();
ts.commit();
}catch(HibernateException e){
if(ts != null){
ts.rollback();
}
throw e;
}finally{
HibernateSessionFactory.closeSession();
}这是为什么呢? 求大牛解答疑惑啊!
Hibernatetransactionrollback
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货