在Spring和Hibernate 5中注册事件监听器 [英] Register Event Listener with Spring and Hibernate 5
问题描述
现在,我想将我的应用程序从Spring hibernate 3升级到5
Now, I would like to upgrade my application from Spring hibernate 3 to 5
在休眠3下,我创建了一个POST-COMMIT-INSERT | UPDATE | DELETE事件侦听器,如下所示
Under hibernate 3, I create a POST-COMMIT-INSERT|UPDATE|DELETE event listener like below
<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="myDataSource" />
<property name="annotatedClasses">
<list>
....
</list>
</property>
<property name="hibernateProperties">
<props>
....
</props>
</property>
<property name="eventListeners">
<map>
<entry key="post-commit-insert">
<bean class="xxxx.AuditLogPostInsertEventListener" />
</entry>
<entry key="post-commit-update">
<bean class="xxxx.AuditLogPostUpdateEventListener" />
</entry>
<entry key="post-commit-delete">
<bean class="xxxx.AuditLogPostDeleteEventListener" />
</entry>
</map>
</property>
</bean>
现在,我尝试在Hibernate 5下创建事件侦听器,但未成功
Now, I try to create the event listener under Hibernate 5 but not success
<bean id="mySessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="myDataSource" />
<property name="annotatedClasses">
<list>
...
</list>
</property>
<property name="hibernateProperties">
<props>
...
</props>
</property>
<property name="eventListeners">
<map>
<entry key="post-commit-insert">
<bean class="xxxx.AuditLogPostInsertEventListener" />
</entry>
<entry key="post-commit-update">
<bean class="xxxx.AuditLogPostUpdateEventListener" />
</entry>
<entry key="post-commit-delete">
<bean class="xxxx.AuditLogPostDeleteEventListener" />
</entry>
</map>
</property>
</bean>
显示了以下消息
Bean类[org.springframework.orm.hibernate5.LocalSessionFactoryBean]的无效属性'eventListeners':Bean属性"eventListeners"不可写或具有无效的setter方法.setter的参数类型是否与getter的返回类型匹配?
Invalid property 'eventListeners' of bean class [org.springframework.orm.hibernate5.LocalSessionFactoryBean]: Bean property 'eventListeners' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
我尝试遵循此stackoverflow,但仍未成功.
I tried to follow this stackoverflow but still not success.
在休眠状态下的PreInsert和PreUpdate事件监听器
我更改了如下配置,但仍然没有成功
I changed the config like below but still not success
<bean id="auditInterceptor" class="xxxx.EntityEventListenerRegistry" />
<bean id="mySessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="myDataSource" />
<property name="annotatedClasses">
<list>
...
</list>
</property>
<property name="hibernateProperties">
<props>
...
</props>
</property>
<property name="entityInterceptor" ref="xxxx.EntityEventListenerRegistry" />
</bean>
推荐答案
根据我的评论,拦截器需要实现 org.hibernate.Interceptor .
Per my comment, the interceptor needs to implement org.hibernate.Interceptor.
这篇关于在Spring和Hibernate 5中注册事件监听器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!