【发布时间】:2011-10-25 14:23:07
【问题描述】:
我需要在标记为@Transactional 的类的方法中手动维护事务。如果我现在尝试这样做,则会引发异常(很可能是因为事务被提交了两次,一次由我提交,两次由包装代理提交)。我需要做什么。
如果这是不可能的,那么有没有办法在事务成功提交时得到通知(数据库中的数据和所有内容),以便我调用另一个依赖于同一个数据库的应用程序?
【问题讨论】:
标签: java database hibernate transactions
我需要在标记为@Transactional 的类的方法中手动维护事务。如果我现在尝试这样做,则会引发异常(很可能是因为事务被提交了两次,一次由我提交,两次由包装代理提交)。我需要做什么。
如果这是不可能的,那么有没有办法在事务成功提交时得到通知(数据库中的数据和所有内容),以便我调用另一个依赖于同一个数据库的应用程序?
【问题讨论】:
标签: java database hibernate transactions
我希望你正在使用 spring。如果是,那么你可以。
从 API here 读取此代码块。在 10.5.6 使用 @Transactional
部分@Transactional(readOnly = true)
public class DefaultFooService implements FooService {
public Foo getFoo(String fooName) {
// do something
}
// these settings have precedence for this method
@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
public void updateFoo(Foo foo) {
// do something
}
}
【讨论】:
不,我不相信这是可能的。我相信如果你创建另一个线程并执行代码,它会在事务之外。请注意这一点,因为当您创建其他线程并自行管理时,它可能会变得很冒险。
【讨论】: