Hibernate无法开启事务的问题

环境:

数据库:SQL SERVER 2000

服务器:Tomcat

开发技术:Jsp,Hibernate

问题:在Session.beginTransaction()后出现

transaction not successfully started

事务不能开启的问题

Dao是自己写的

	public void add(T bean)
	{
		Session session = HibernateSessionFactory.getSessionFactory().openSession();

		try {
			session.beginTransaction();
			session.persist(bean);
			session.getTransaction().commit();

		}
		 catch (RuntimeException e) {
			session.getTransaction().rollback();
			throw e;
		}
		 finally {
			session.close();
		}
	}

这个代码在以前其它的环境中使用过,没出现问题.

但这次怎么都不行,总是报 事务不能成功启动的异常.

试着在Hibernate中加入了C3p0连接池,异常依旧.

百度一下,有的说是可能存在事务的嵌套,有的说是其它的原因,

current_session_context_class 配置为thread,异常依旧.

试试不开新Session吧.直接用HibernateSessionFactory.getSession();试试,

没想到一下通过了.

HibernateSessionFactory.getSession();方法是从当前纯程中取Session,如果当前线程中没有Session,它会新建一个Session放到当前线程中

原理是这么个原理,看来可能是事务有嵌套问题

但是我没有开过Session啊,自己也没有开启过其它的事务.

只能猜测是Tomcat中哪里自动开启了吧.

对Hibernate理解的才是不够精.

问题解决了,但原因不太明,不知道高手们有没有其它的解释?

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值