Transaction transaction= session.getTransaction();
transaction.begin();
transaction.commit();
HibernateSessionFactory.closeSession();
transaction只开始了一次,而且最后也提交了,但是还是会出现异常
org.hibernate.TransactionException:nested transaction not supported.
答案:2 悬赏:60 手机版
解决时间 2021-03-16 17:14
- 提问者网友:夢醒日落
- 2021-03-16 07:55
最佳答案
- 五星知识达人网友:街头电车
- 2021-03-16 08:32
你在try中打开过事务了,完了catch中又打开,这造成了事务的嵌套,是不允许的
你应该在try开始前先声明事务
Transaction tran = session.beginTransaction();
try
{
.....
tran.commit();
session.close();
}
catch (...)
{
tran.rollback();
}
不应该是每次都调用beginTransaction()方法
你应该在try开始前先声明事务
Transaction tran = session.beginTransaction();
try
{
.....
tran.commit();
session.close();
}
catch (...)
{
tran.rollback();
}
不应该是每次都调用beginTransaction()方法
全部回答
- 1楼网友:摆渡翁
- 2021-03-16 10:00
for (guestbook gb:list){
system.out.print("id:"+gb.getid());
system.out.print("name:"+gb.getname());
system.out.print("email:"+gb.getemail());
system.out.print("phone:"+gb.getphone());
system.out.print("title:"+gb.gettitle());
system.out.print("content:"+gb.getcontent());
system.out.println("createdtime:"+gb.getcreatedtime());
tx.commit();
}
这个地方的事物应该在所有数据操作完毕后再提交
system.out.print("id:"+gb.getid());
system.out.print("name:"+gb.getname());
system.out.print("email:"+gb.getemail());
system.out.print("phone:"+gb.getphone());
system.out.print("title:"+gb.gettitle());
system.out.print("content:"+gb.getcontent());
system.out.println("createdtime:"+gb.getcreatedtime());
tx.commit();
}
这个地方的事物应该在所有数据操作完毕后再提交
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯