afterTransactionCompletion не работает - PullRequest
0 голосов
/ 11 ноября 2009

Я создал перехватчик гибернации:

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.");
        }
    }
}

но метод afterTransactionCompletion не выполняется после совершения транзакции. Я перепробовал все известные мне способы, но не могу заставить его работать. Что еще удивительнее, метод onSave работает нормально.

Помогите!

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

Как обойти эту ошибку, если она является причиной?

1 Ответ

0 голосов
/ 11 ноября 2009

Какой должна быть подпись afterTransactionCompletion? В документации я нашел это говорит:

void afterTransactionCompletion(boolean successful, Transaction tx)

В этом случае неудивительно, что ваш метод не вызывается.

Я думаю, что если вы используете аннотацию @Override, компилятор предупредит вас, что вы неправильно поняли подпись.

...