繁体   English   中英

我的休眠拦截器不工作

[英]My Hibernate Interceptor is not working

我有以下配置:

<bean id="myHibernateInterceptor" class="com.foo.interceptor.MyHibernateInterceptor" />

<bean id="sessionFactory"  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
      <property name="configLocation">
            <value>classpath:hibernate.cfg.xml</value>
      </property>
      <property name="entityInterceptor" ref="myHibernateInterceptor"/>
</bean>

但是我的休眠拦截器永远不会触发。 有什么线索吗?

这是拦截器代码:

public class MyHibernateInterceptor extends EmptyInterceptor {

   @Override
   public boolean onFlushDirty(final Object entity, final Serializable id, 
                           final Object[] currentState, final Object[] previousState, 
                           final String[] propertyNames, final Type[] types) {
    setValue(currentState, propertyNames, "createdOn", new Date());

            return true;
    }
}

我在面临同样的问题时发现了这个问题。 我的 onSave() 运行良好,但我的 onFlushDirty() 却没有。 我发现需要在 saveOrUpdate() 之后添加一个 flush() 调用。 回想起来,这似乎很明显,但在当时并非如此。

希望这可以帮助。

你有没有把拦截器放在会话上,你也可以在拦截器上使用会话构建器:

SessionFactory sessionFactory = getSessionFactory(); 
SessionBuilder sessionBuilder = sessionFactory.withOptions(); 
Session session = sessionBuilder.interceptor(interceptor).openSession(); interceptor.setSessionBuilder(sessionBuilder);

您的拦截器必须扩展类 org hibernate EmptyInterceptor

根据您的业务,您实施这些方法 onsave onupdate ondelete postflush 等

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM