Как войти в запрос jpa с пользовательским сообщением? - PullRequest
0 голосов
/ 18 октября 2018

У меня есть проект с spring-data-jpa 2.0.5.RELEASE.Мне нужно войти в файл каждый выполненный запрос (insert, update, delete, select) с параметрами и другой информацией.Я обнаружил, что вы можете включить Hibernate для регистрации запросов и параметров, но они не в нужном мне формате.

Прямо сейчас он печатает что-то вроде этого: - (информация) Hibernate: выберите * из таблицы а где топорзнак равно- (info) параметр привязки [1] как [VARCHAR] - com.mypackage.foo

Я хочу что-то вроде: - (отладка) Пользователь Микки Маус спрашивает Select * из таблицы a, где ax =?[com.mypackage.foo]

Есть ли способ сделать что-то подобное?Я попытался использовать aop, но у меня проблема с поиском pointcut, и я не уверен, что нашел правильный метод для переноса.

Это мой тест.(Не работает)

@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));
            }
        }

1 Ответ

0 голосов
/ 18 октября 2018

Чтобы увидеть параметры привязки, вы должны установить это свойство:

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

Вы также можете добавить пользовательские сообщения: Как проводить аудит данных Spring jpa @Query?

...