org.hibernate.HibernateException: Could not obtain transaction-synchronized Session

mac2025-09-07  3

org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread 这个异常。 (据说hibernate 4以上的版本才会有)

@Repository public class UserDaoImpl implements IUserDao { @Autowired private SessionFactory sessionFactory; private Session getSession(){ return sessionFactory.getCurrentSession(); }

这里可以用Session session = sessionFactory.openSession(),然后代码中去关闭 session.close.当然为了偷懒的原则必须不自己去管理session。让Spring容器自己去处理。研究了一下。发现 只要在applicationContext.xml 中追加

<!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <tx:annotation-driven transaction-manager="transactionManager"/>

然后再在实现类加上@Transactional

@Repository @Transactional public class UserDaoImpl implements IUserDao { @Autowired private SessionFactory sessionFactory; private Session getSession(){ return sessionFactory.getCurrentSession(); } ... }
最新回复(0)