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(); } ... }