afterTransactionCompletion无效

时间:2009-11-11 07:59:45

标签: java hibernate java-ee

我创建了一个hibernate拦截器:

public class MyInterceptor extends EmptyInterceptor {

private boolean isCanal=false;

public boolean onSave(Object entity, Serializable arg1, Object[] arg2, String[] arg3, Type[] arg4) throws CallbackException {

    for(int i=0;i<100;i++){
        System.out.println("Inside MyInterceptor(onSave) : "+entity.toString());
    }
    if(entity instanceof Canal){
        isCanal=true;
    }
    return false;
}

public void afterTransactionCompletion(Transaction tx){
    if(tx.wasCommitted()&&(isCanal)){
        for(int i=0;i<100;i++){
            System.out.println("Inside MyInterceptor(afterTransactionCompletion) : Canal was saved to DB.");
        }
    }
}

但是事务提交后,事务执行后的方法不会执行。我已经尝试过我所知道的所有方法,但我无法使其发挥作用。更令人惊讶的是onSave方法工作正常。

帮助!

Could this be due to this bug ? :
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1956

如果是这个原因我该怎样绕过这个错误?

1 个答案:

答案 0 :(得分:0)

afterTransactionCompletion应该是什么意思?在文档中我发现它说:

void afterTransactionCompletion(boolean successful, Transaction tx)

在这种情况下,不会调用您的方法。

我认为如果您使用@O​​verride注释,编译器会警告您签名错误。