是否可以将整个@Transactional类的一个方法标记为非事务性的

时间:2011-10-25 14:23:07

标签: java database hibernate transactions

我需要在标记为@Transactional的类的方法中手动维护事务。如果我现在尝试这样做,则抛出异常(很可能是因为事务被提交两次,一次由我提交,两次由包装器代理提交)。我需要做什么。

如果这不可能,那么有没有办法在成功提交事务时得到通知(数据库中的数据和所有内容),以便我调用另一个依赖于相同数据库的applciation?

2 个答案:

答案 0 :(得分:1)

我希望您使用 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
}
}

答案 1 :(得分:0)

不,我不相信这是可能的。我相信如果你创建另一个线程并执行代码,它将在事务之外。要小心,因为当你创建额外的线程并自己管理它时,它会变得很冒险。