首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的Hibernate Interceptor不工作

我的Hibernate Interceptor不工作
EN

Stack Overflow用户
提问于 2011-09-16 06:50:38
回答 2查看 2.1K关注 0票数 0

我的配置如下:

代码语言:javascript
复制
<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拦截器永远不会启动。有什么线索吗?

下面是拦截器代码:

代码语言:javascript
复制
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;
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-28 02:18:02

我在面对同样的问题时发现了这个问题。我的onSave()运行得很好,但是我的onFlushDirty()却不行,我发现需要在saveOrUpdate()之后添加一个flush()调用。回过头来看,这似乎很明显,但在当时并非如此。

希望这能有所帮助。

票数 3
EN

Stack Overflow用户

发布于 2016-04-12 05:10:30

您是否将拦截器放在会话上,也可以在拦截器上使用sessionbuilder:

代码语言:javascript
复制
SessionFactory sessionFactory = getSessionFactory(); 
SessionBuilder sessionBuilder = sessionFactory.withOptions(); 
Session session = sessionBuilder.interceptor(interceptor).openSession(); interceptor.setSessionBuilder(sessionBuilder);

拦截器必须扩展类org hibernate EmptyInterceptor

根据你的业务,你可以实现那些方法,onsave,onupdate,ondelete,postflush等等

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7438353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档