Register Event Listener with Spring and Hibernate 5

leonlai :

Now, I would like to upgrade my application from Spring hibernate 3 to 5

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>

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>

The follow message was shown

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?

I tried to follow this stackoverflow but still not success.

PreInsert and PreUpdate Event Listener in hibernate

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>
bungrudi :

Per my comment, the interceptor needs to implement org.hibernate.Interceptor.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=90928&siteId=1