我Hibernate的拦截器不工作
问题描述:
下面我有以下配置:我Hibernate的拦截器不工作
<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()后需要addng一个flush()调用。回头看,这似乎很明显,但它不是那个时候。
希望这会有所帮助。
答
你有没有把intercepetor上的会话,你也可以使用sessionbuilder上拦截:
SessionFactory sessionFactory = getSessionFactory(); SessionBuilder sessionBuilder = sessionFactory.withOptions(); Session session = sessionBuilder.interceptor(interceptor).openSession(); interceptor.setSessionBuilder(sessionBuilder);
你的拦截器必须扩展的类组织冬眠EmptyInterceptor
将根据您的业务内容你实现这些方法onsave onupdate ondelete后冲等
看起来一见钟情。你的拦截器怎么样 - 你扩展EmptyInterceptor吗?如果是的话,你会覆盖哪些方法?也许你可以展示更多的代码。 – jeha