![](/img/trans.png)
[英]Hibernate Interceptor not working after upgrading to Hibernate 5
[英]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.