【发布时间】:2009-05-05 19:06:21
【问题描述】:
我正在开发一个使用 Spring 并使用 TransactionInterceptor 透明地获取 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 为我调用本地方法并在需要时将其包装在事务中,还是必须在我连接到这个的另一个类中?
【问题讨论】:
标签: java database hibernate spring