TransactionException: Transaction not successfully started

18,832

Solution 1

You should not do session.getTransaction().commit(); this, the @transactional will take care of it. Remove it, you should be fine.

Solution 2

where you begin the transaction. i can't see this line session.beginTrainsaction(); once you begin the transaction then only you can commit and rollback

Share:
18,832
Admin
Author by

Admin

Updated on June 07, 2022

Comments

  • Admin
    Admin almost 2 years

    I have following dao:

    @Repository("userDao")
    public class UserDaoImpl implements UserDao {
    
        @Autowired
        private SessionFactory sessionFactory;
    
        @Transactional
        public void add(User user) {
            Session session = sessionFactory.getCurrentSession();
            session.save(user);
            session.getTransaction().commit();
        }
    }
    

    it is invokes from

    @Controller
    public class HomeController {    
    
        @Autowired
        private UserDao userDao;
    
    
        @RequestMapping(value = "/test")
        public ModelAndView test() {
            User user = new User();
            user.setName("34r");
    
            userDao.add(user);
    
            ModelAndView model = new ModelAndView("home");
            model.addObject("userList", null);
            return model;
    
        }
    
    }
    

    in browser I try to access to this link

    And finally I get following stacktrace:

    SEVERE: Servlet.service() for servlet [appServlet] in context with path [/SpringMvcHibernateXML] threw exception [Request processing failed; nested exception is org.springframework.transaction.TransactionSystemException: Could not commit Hibernate transaction; nested exception is org.hibernate.TransactionException: Transaction not successfully started] with root cause
    org.hibernate.TransactionException: Transaction not successfully started
        at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:172)
    

    I have following configuration:

    <bean id="sessionFactory"
            class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
            <property name="dataSource" ref="dataSource" />
            <property name="configLocation" value="classpath:hibernate.cfg.xml" />
        </bean>
    
        <tx:annotation-driven />
        <bean id="transactionManager"
            class="org.springframework.orm.hibernate4.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory" />
        </bean>
    

    How to fix this problem?

  • Chetan Nellekeri
    Chetan Nellekeri about 7 years
    Thank you.. I found it useful