【发布时间】:2013-06-01 13:33:35
【问题描述】:
我需要拒绝一小部分方法的事务回滚,但我不知道该怎么做,因为在方法的其他部分我需要标准行为。
这是我的 Spring,Hibernate 配置:
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
并且我的类是用“@Transaction”注释声明的,以在出现异常时打开事务并回滚。 但是,我需要在对 db 进行重要插入后强制提交。如何做到这一点?
这是示例代码:
@Transactional
public void myMethod(Object obj){
check.do();
check.control();
try{
dao.insert(obj);
fileWriter.write();
printer.print();
}catch(Exception e){
log.error(e);
}
}
我在 try 语句 (dao.insert) 中所做的事情必须在自动提交中,因为我不希望在插入回滚事务之后发生这种情况。在我的示例中,如果 printer.print() 失败,我不希望 dao.insert() 回滚。但是我只需要在此尝试中使用此行为。
谢谢
编辑
我还尝试远程 @Transactional 注释并仅为 dao.insert 创建一个私有事务方法,但是 tt 失败了其他组件内的所有延迟加载实体(例如,printer.print() 等等)。
【问题讨论】:
标签: java mysql spring hibernate transactions