我正在使用Spring並使用TransactionInterceptor透明地獲取Hibernate事務的程序。這使得非常方便的說「當這個方法從其他類中調用時,如果它不在一個事務中,則將它包裝在事務中。」獲取Spring類中的Hibernate事務
但是,我有一個類需要嘗試寫,並且必須立即找出它是否成功。儘管我想要兩種方法,但我希望有一種方法可以讓他們保持在同一個班級中,而不需要程序上明確地創建一個事務。實際上,我想是這樣的:
public void methodOne() {
//..do some stuff
try {
transactionalMethod();//won't do what I want
} catch(OptimisticLockingFailure e) {
//..recover
}
}
@Transactional
public void transactionalMethod() {
//...do some stuff to database
}
不幸的是,我的理解是,這是行不通的,因爲我只是直接調用transactionalMethod。有沒有辦法讓Spring爲我調用本地方法並在需要時將其包裝在事務中,還是必須在另一個類中連接到此類?