我有一个带有 spring-data-jpa 2.0.5.RELEASE 的项目。我需要使用参数登录每个执行的查询(insert
、update
、delete
、select
)的文件,其他信息。我发现您可以启用 Hibernate 来记录查询和参数,但它们不是我需要的格式。
现在它打印出这样的内容: -(信息)Hibernate:从表 a 中选择*,其中 a.x= ? - (info) 绑定(bind)参数 [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));
}
}
最佳答案
为了查看绑定(bind)参数,您必须设置此属性:
#Spring boot
logging.level.org.hibernate.type.descriptor.sql=trace
您还可以添加自定义消息: How to Audit Spring data jpa @Query?
关于java - 如何使用自定义消息记录 jpa 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52875796/