我的配置如下:
<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>但是我的hibernate拦截器永远不会启动。有什么线索吗?
下面是拦截器代码:
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;
}
}发布于 2011-09-28 02:18:02
我在面对同样的问题时发现了这个问题。我的onSave()运行得很好,但是我的onFlushDirty()却不行,我发现需要在saveOrUpdate()之后添加一个flush()调用。回过头来看,这似乎很明显,但在当时并非如此。
希望这能有所帮助。
发布于 2016-04-12 05:10:30
您是否将拦截器放在会话上,也可以在拦截器上使用sessionbuilder:
SessionFactory sessionFactory = getSessionFactory();
SessionBuilder sessionBuilder = sessionFactory.withOptions();
Session session = sessionBuilder.interceptor(interceptor).openSession(); interceptor.setSessionBuilder(sessionBuilder);拦截器必须扩展类org hibernate EmptyInterceptor
根据你的业务,你可以实现那些方法,onsave,onupdate,ondelete,postflush等等
https://stackoverflow.com/questions/7438353
复制相似问题