我需要拒絕事務回滾一小段方法,我不知道該怎麼做,因爲在方法的其他部分我需要標準的行爲。休眠和Mysql,交易自動提交只是一個部分
這是我的春天,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註釋和createa只是爲了dao.insert,怎麼過TT失敗其他組件內所有實體延遲加載的私人事務性方法(例如printer.print()等)。
但如果我沒有在方法中設置@Transactional被交易自動啓動,或者我應該手動啓動它? – Tobia
我試過了,沒有@Transactional我得到「無法初始化代理 - 沒有會話」 – Tobia