我有以下Hibernate 拦截器:
@Component
@RequiredArgsConstructor
public class CustomInterceptor extends EmptyInterceptor {
private static final long serialVersionUID = 7228720290710296593L;
@Override
public boolean onSave(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) {
// do some things
return super.onSave(entity, id, state, propertyNames, types);
}
@Override
public boolean onFlushDirty(Object entity, Serializable id, Object[] currentState, Object[] previousState, String[] propertyNames, Type[] types) {
// do some things
return super.onFlushDirty(entity, id, currentState, previousState, propertyNames, types);
}
}
我正在try 通过实现Interceptor
而不是扩展EmptyInterceptor
来进行升级,因为它已被弃用.我的新拦截器如下:
@Component
@RequiredArgsConstructor
public class CustomInterceptor implements Interceptor, Serializable {
private static final long serialVersionUID = 7228720290710296593L;
@Override
public boolean onSave(Object entity, Object id, Object[] state, String[] propertyNames, Type[] types) {
// do some things
}
@Override
public boolean onFlushDirty(Object entity, Object id, Object[] currentState, Object[] previousState, String[] propertyNames, Type[] types) {
// do some things
}
}
基本上,这两个拦截器执行完全相同的操作.然而,第一个可以工作,而第二个不行.我的意思是,onSave
和onFlushDirty
会在预期的时间被调用,而在第二个例子中,它们根本不会被调用.所以,它应该与他们所涉及的操作没有任何关系.既然EmptyInterceptor
真的什么都不做,我不知道实现出了什么问题.
UPDATE 1个
我刚刚发现,它并没有输入我被覆盖的方法,而是简单地使用了Interceptor
个默认的onSave
和onFlushDirty
.那件事怎么可能?
UPDATE 2个
如果我覆盖了过时的方法onSave
和onFlushDirty
,而不是有效的方法,它就能工作.