如何使用自定义消息记录 jpa 查询?



我有一个带有spring-data-jpa 2.0.5.RELEASE的项目。我需要在文件中的每个执行查询(insertupdatedeleteselect(中记录参数和其他信息。我发现您可以启用Hibernate来记录查询和参数,但它们不是我需要的格式。

现在它打印如下内容: - (信息(休眠:从表 A 中选择 *,其中 a.x= ? - (信息( 绑定参数 [1] 作为 [VARCHAR] - com.mypackage.foo

我想要这样的东西: - (调试(用户米老鼠要求从表 a 中选择 *,其中 a.x= ?[com.mypackage.foo]

有没有办法做类似的事情? 我尝试使用 aop,但我找不到切入点,我不确定我是否找到了正确的包装方法。

这是我的考验。(不工作(

@Pointcut("within(org.springframework.data.jpa.repository.query.JpaQueryExecution+)")
public void jpaQueryMethods() {}
@Pointcut("execution(* execute(..))")
public void executionMethods() {}
@Before("jpaQueryMethods()")
public void beforeJpaQueryExecution(JoinPoint joinPoint){
logger.fatal(" signature->", joinPoint.getSignature().toLongString());
if(joinPoint.getArgs()!=null) {
for(Object arg: joinPoint.getArgs()) {
logger.info("----------->"+String.valueOf(arg));
}
}

要查看绑定参数,您必须设置此属性:

#Spring boot
logging.level.org.hibernate.type.descriptor.sql=trace

您还可以添加自定义消息: 如何审核弹簧数据 JPA @Query?

最新更新