Java 在hibernate中事务结束前保存对象

Java 在hibernate中事务结束前保存对象,java,hibernate,transactions,Java,Hibernate,Transactions,我正在为事务使用JbpmContext,它是在filter中实现的。我有一个servlet控制器,它调用服务方法,然后调用DAO方法来持久化对象。如果发生任何异常,Servlet控制器正在处理回滚操作。但在某些情况下,当异常仍然激发时,我希望在服务层持久化特定对象的特定字段。我尝试了session.flush,但根本不起作用 让我给你举个例子 class servletController { public void doGet(request, response) throws Se

我正在为事务使用JbpmContext,它是在filter中实现的。我有一个servlet控制器,它调用服务方法,然后调用DAO方法来持久化对象。如果发生任何异常,Servlet控制器正在处理回滚操作。但在某些情况下,当异常仍然激发时,我希望在服务层持久化特定对象的特定字段。我尝试了session.flush,但根本不起作用

让我给你举个例子

class servletController {

    public void doGet(request, response) throws ServletException, IOException{

        try {

            testService.test(object);

        } catch (Exception e) {
            // rollback
        }
    }
}


class TestService {

    public void test(object) throws Exception {

        try {

            // Business logic. Here is the codes which throws some exception


        } catch(Exception e) {
            object.setFailed(true); // Any how, I want to persist this field
            session.save(object);
            session.flush(); 
            throw e;
        }
    }
}
我有一个解决方案,就像我可以在seprate事务中做一样,但我不想要那个。
那个么,在事务结束之前,有并没有其他方法来持久化对象呢?我只想在服务层执行此操作。

如果数据未存储在catch块中,该怎么办。另一个问题是,如果出现任何异常,请尝试解决它。不尝试执行任何操作都可以为您生成另一个异常。感谢Vighanesh的回复。实际上,从测试方法的业务逻辑来看,我正在调用检查资源是否在线的方法,若不在线,则抛出用户定义的异常。所以我只是接受了这个异常并将对象状态更新为失败。我可以通过接受这个特定的用户定义的异常并将其从回滚部分中移除来从控制器端实现这一点,但这是一个大型企业应用程序和许多其他代码都依赖于它。因此,如果有人有任何解决方案,我只想使用我建议的流程。