现在,我想将我的应用程序从 Spring Hibernate 3 升级到 5
在 hibernate 3 下,我创建一个 POST-COMMIT-INSERT|UPDATE|DELETE 事件监听器,如下所示
<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 下创建事件监听器但没有成功
<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 的返回类型是否匹配?
我试图遵循这个 stackoverflow 但仍然没有成功。
休眠中的 PreInsert 和 PreUpdate 事件监听器 https://stackoverflow.com/questions/20368551/preinsert-and-preupdate-event-listener-in-hibernate
我更改了如下配置但仍然没有成功
<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>