2023年2月15日
jpa增加一个拦截器
参考:(34条消息) Hibernate拦截器字段加密解密_我是大大大大师兄的博客-CSDN博客_hibernate 拦截器
1.增加一个jpa的拦截器
2.参考:https://blog.csdn.net/C_tongxue/article/details/124621259
3.nacos 增加配置如下
spring:
jpa:
properties:
hibernate:
session_factory:
interceptor: xxx.xxx.xxx
代码如下:
package com.xxx.xxx;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.EmptyInterceptor;
import org.hibernate.type.Type;
import org.springframework.stereotype.Component;
import java.io.Serializable;
/**
* YqInterceptor
*
* @author zeroheart
* @since 2023/2/15
*/
@Component
@Slf4j
public class YqInterceptor extends EmptyInterceptor {
/**
* 更新时调用
*
* @param entity 实体类
* @param id 主键
* @param currentState 当前实体类对应的值
* @param previousState 修改前实体类对应的值
* @param propertyNames 字段名
* @param types 实体类每个属性类型对应hibernate的类型
* @return true | false true才会修改数据
*/
@Override
public boolean onFlushDirty(Object entity, Serializable id, Object[] currentState, Object[] previousState, String[] propertyNames, Type[] types) {
log.error("onFlushDirty");
log.error("propertyNames:"+ JSON.toJSONString(propertyNames));
log.error("currentState:"+JSON.toJSONString(currentState));
log.error("previousState:"+JSON.toJSONString(previousState));
return super.onFlushDirty(entity, id, currentState, previousState, propertyNames, types);
}
/**
* 加载时调用
*
* @param entity 实体类
* @param id 主键
* @param state 实体类对应的值
* @param propertyNames 字段名
* @param types 实体类每个属性类型对应hibernate的类型
* @return true | false true才会修改数据
*/
@Override
public boolean onLoad(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) {
log.error("onLoad");
log.error("propertyNames:"+JSON.toJSONString(propertyNames));
log.error("state:"+JSON.toJSONString(state));
return super.onLoad(entity, id, state, propertyNames, types);
}
/**
* 保存时调用
*
* @param entity 实体类
* @param id 主键
* @param state 实体类对应的值
* @param propertyNames 字段名
* @param types 实体类每个属性类型对应hibernate的类型
* @return true | false true才会修改数据
*/
@Override
public boolean onSave(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) {
log.error("onSave");
log.error("propertyNames:"+JSON.toJSONString(propertyNames));
log.error("state:"+JSON.toJSONString(state));
return super.onSave(entity, id, state, propertyNames, types);
}
}