У меня есть простой HibernateInterceptor, в котором в основном я хочу установить несколько полей автоматически. Этот перехватчик (как показано ниже) расширяет EmptyInterceptor:Hibernate Interceptor не работает
public class EntityAuditInterceptor extends EmptyInterceptor {
/**
* The Serial Version UUID.
*/
private static final long serialVersionUID = 4636626262147801287L;
/* (non-Javadoc)
* @see org.hibernate.EmptyInterceptor#onFlushDirty(java.lang.Object, java.io.Serializable, java.lang.Object[], java.lang.Object[], java.lang.String[], org.hibernate.type.Type[])
*/
public boolean onFlushDirty(Object entity, Serializable id, Object[] currentState, Object[] previousState, String[] propertyNames, Type[] types) {
// doing stuff here
return false;
}
/* (non-Javadoc)
* @see org.hibernate.EmptyInterceptor#onSave(java.lang.Object, java.io.Serializable, java.lang.Object[], java.lang.String[], org.hibernate.type.Type[])
*/
public boolean onSave(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) {
// doing stuff here
return false;
}
}
Я проводке с помощью файла конфигурации пружины следующим образом:
<!-- Hibernate SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="hsqlDbDataSource"/>
<property name="packagesToScan">
<list>
<value>com.dreamteam.lms.**.*</value>
</list>
</property>
<!-- Adding Interceptor here -->
<property name="entityInterceptor">
<bean class="com.dreamteam.lms.interceptors.EntityAuditInterceptor"></bean>
</property>
<property name="hibernateProperties">
<props>
<!--<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>-->
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
<prop key="hibernate.generate_statistics">true</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.SingletonEhCacheProvider</prop>
</props>
</property>
</bean>
Однако Interceptor никогда не достигается. Кто-нибудь знает? Я также попытался добавить следующее определение менеджера транзакций боба следующим образом:
<property name="entityInterceptor">
<ref local="entityAuditInterceptor"/>
</property>
Привет gutch ... Я закомментировать части кода, так что вопрос здесь короче. Моя проблема в том, что она вообще не входит в перехватчик. Я поставил точку останова в перехватчике. Тем не менее, это никогда не выполняется. Я действительно не знаю. – Kros
@gutch Вы могли бы посмотреть на очень похожий вопрос http://stackoverflow.com/questions/27602318/hibernate-myinterceptoronflushdirty-is-never-called pls? –