Hibernate 事务不回滚

Hibernate 事务不回滚,hibernate,spring,transactional,open-session-in-view,Hibernate,Spring,Transactional,Open Session In View,我在应用程序中使用OpenSessionInView。 我的目标是在发生任何异常时,用一种方法回滚数据库中的所有更改。这是我的控制器: @RequestMapping(value="/kartazadan.do", method=RequestMethod.GET ) @Transactional(rollbackFor=Exception.class) public ModelAndView viewGET(HttpServletRequest request,

我在应用程序中使用OpenSessionInView。 我的目标是在发生任何异常时,用一种方法回滚数据库中的所有更改。这是我的控制器:

@RequestMapping(value="/kartazadan.do", method=RequestMethod.GET )
    @Transactional(rollbackFor=Exception.class)
    public ModelAndView viewGET(HttpServletRequest request,
            HttpServletResponse response) throws Exception{
        int id = Integer.parseInt(ServletRequestUtils.getRequiredStringParameter(request, "id")); 
        ModelMap modelMap = new ModelMap();
        KartaZadan kartaZadan = kartaZadanDAO.getkartaZadanById(id);
        kartaZadan.setZadanie("TEST10");
        kartaZadanDAO.update(kartaZadan);
        kartaZadan = kartaZadanDAO.getkartaZadanById(null); //here when Exception should occurr and make transaction rollback
        kartaZadanDAO.update(kartaZadan);
        modelMap.addAttribute("kartaZadan", kartaZadan);
        setCommonFields(modelMap);
        modelMap.addAttribute("errorsEnabled", false);
        return new ModelAndView("kartaZadan", modelMap);
    }
在下面给出的配置下,它可以工作: 在web.xml中:

<filter>
        <filter-name>hibernateFilter</filter-name>
        <filter-class>
           org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
        </filter-class>
</filter>

<bean class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor"> 
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>

现在我可以保存/更新,但事务不会回滚。。。如何使两者都起作用

您面临的问题可能是因为“自动提交”已打开。你必须把它关掉

<property name="hibernate.connection.autocommit">false</property> 
false

并通过session.getTransaction()显式执行提交。如果一切正常,请提交。

是更新视图中的数据还是只渲染数据?我只是想澄清一下。。。
<property name="hibernate.connection.autocommit">false</property>