我在接缝组件上使用@Transactional 注释,类似于:
@Name( "myComponent" )
@AutoCreate
public class MyComponent
{
public void something() {
...
doWork();
}
...
@Transactional
protected void doWork() {
try {
log.debug( "transaction active: " + Transaction.instance().isActive() );
} catch (Exception ignore) {}
// some more stuff here that doesn't appear to be inside a transaction
}
}
在“一些更多的东西”部分,我正在修改一些 Hibernate 实体,然后遇到了一个引发异常的错误。我注意到异常并没有导致事务回滚(修改后的实体仍在数据库中修改),所以我添加了“事务活动”日志记录。当此代码执行时,isActive() 返回 false。
有什么我想念的吗?为什么交易不活跃?
万一这很重要,我正在使用另一个组件内部的 Seam 组件,该组件使用 RESTEasy 注释来触发我的方法调用。