首页 > 解决方案 > Hibernate EntityInterceptor (EmptyInterceptor):过滤掉所有@Transaction(readOnly=TRUE) 事务

问题描述

我定义并成功插入了捕获所有事务的 Hibernate DB 拦截器。

public class HibernateTransactionInterceptor extends EmptyInterceptor {

    @Override
    public void afterTransactionBegin(Transaction tx) {

        System.out.println("Intercepted"); 
        // ...
        super.afterTransactionBegin(tx);        
    }
}

应用程序上下文.xml:

<bean id="transactionInterceptor" class="myapp.interceptor.HibernateTransactionInterceptor" />

<bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
  <!-- Plug into SessionFactory the Interceptor bean define above -->
  <property name="entityInterceptor" ref="transactionInterceptor" />

  ...
</bean>

现在,拦截器触发所有 @Transaction服务方法。但我只需要拦截@Transaction(readOnly=FALSE)方法(即过滤掉所有只读方法)。有没有办法配置它?

标签: springhibernate

解决方案


推荐阅读