一尘不染

事件监听器在Spring 3.1.0.release中使用Hibernate 4.0?

java

这些jar都是新发布的,并且具有针对Java EE应用程序的最新解决方案。但是我在hibernate.cfg.xml中指定休眠监听器时遇到问题。

在春季3.1.0之前,LocalSessionFactroyBean它拥有一个保留事件监听器的属性。但是对于3.1.0.release,没有事件监听器映射。现在,我无法在saveorupdate,postload等上跟踪模态对象,因为它们不是由Spring配置的。您有解决此问题的想法吗?


阅读 154

收藏
2020-09-08

共1个答案

一尘不染

我遇到了同样令人沮丧的问题。Hibernate
4似乎从根本上改变了您注册事件的方式,而Spring组尚未赶上。这是我的基于注释的解决方案,使用init方法注册侦听器:

@Component
public class HibernateEventWiring {

    @Autowired
    private SessionFactory sessionFactory;

    @Autowired
    private SomeHibernateListener listener;

    @PostConstruct
    public void registerListeners() {
        EventListenerRegistry registry = ((SessionFactoryImpl) sessionFactory).getServiceRegistry().getService(
        EventListenerRegistry.class);
        registry.getEventListenerGroup(EventType.POST_COMMIT_INSERT).appendListener(listener);
        registry.getEventListenerGroup(EventType.POST_COMMIT_UPDATE).appendListener(listener);
    }
}

拦截器是另一种很好的方法,但是错误地放弃了对拦截器的支持:https
:
//jira.springsource.org/browse/SPR-8940

2020-09-08