• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

로그에 native Query가 출력되게 하려면 어떻게 해야하나요?

23.05.12 13:36 작성 23.05.12 13:37 수정 조회수 442

0

요약

  • QuerydslRepositorySupport 적용

  • p6spy 적용

  • 쿼리 로그는 출력이 되고 있지만 native query로 출력되지 않음.

 

로그 예시

-- 현재 출력되는 로그 포맷
select
  daOrder.id,
  daOrder.createDate
from
  DaOrder daOrder



-- 원하는 로그 포맷
select
  d.id,
  d.create_date
from
   da_order d

 

로컬에서 네이티브 쿼리가 바로 로그에 보이도록 설정하고 싶은데
테이블명이 아닌 클래스명으로 쿼리가 출력이 되고 있는데요
혹시 어떤 설정을 바꿔야하는지 알 수 있을까요??

 

답변 1

답변을 작성해보세요.

1

codesweaver님의 프로필

codesweaver

2023.05.12

안녕하세요, 정다을 님! 공식 서포터즈 codesweaver 입니다.

다음의 코드를 참조하여 Querydsl 설정 중 namingStrategy 를 변경해보시겠어요?

JPAQueryFactory queryFactory = new JPAQueryFactory(entityManager);
queryFactory.setExpressionHandlers(querydslBindingsFactory, new DefaultParameterMetadataProvider(), new ExceptionTranslator(), QuerydslConfig.DEFAULT);
queryFactory.setQuerydsl(new DefaultQuerydsl(querydslBindingsFactory, new EntityPathResolver(entityManager.getMetamodel()) {
    @Override
    public Path<?> createPath(String entityPath) {
        // 테이블명 대신 클래스명 사용
        return super.createPath(entityPath.replaceFirst("^[^\\.]+", ""));
    }
}));

 

그리고 p6spy 설정파일(properties 혹은 yaml)에 다음을 추가해주시기 바랍니다.

use_class_name=false


감사합니다.

spring.jpa.properties.hibernate.use_sql_comments : true

위 설정을 삭제하니까 네이티브 쿼리로 로그가 찍혔어요
달아주신 답변도 매우 도움이 되었습니다 감사합니다