인프런 커뮤니티 질문&답변

hym님의 프로필 이미지
hym

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

수업 자료

동적 table naming 관련 건

작성

·

1.3K

0

 [질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 아니오
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요! 질문이 있어 문의 드립니다.

일반적으로 @entity에 테이블 명시를 하고 사용하는데 이 방법 외에
Spring boot JPA 에서 동적으로 table 이름을 변경할 수 있는 방법이 있는지 궁금합니다.
 
repository 인터페이스에 @Query 에서 테이블 이름을 파라미터로 주고, nativeQuery=true로 사용해보려고 하였으나 동작되지 않았습니다. (You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near)
 
몇 가지 방법을 찾아보았는데 해결이 어려워 관련하여 조언을 부탁드립니다.
 
  • https://stackoverflow.com/questions/37190116/changing-table-name-dynamiclly-in-jpa-hibernate
  • https://javaaltaf.blogspot.com/2019/01/change-table-name-of-entity-at-runtime.html

답변 2

0

hym님의 프로필 이미지
hym
질문자

해당 부분 해결하였습니다! 

em.createNativeQuery
김영한님의 프로필 이미지
김영한
지식공유자

스스로 잘 해결하셨습니다^^

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. hym님

엔티티 이름을 동적으로 변경하려면 JPQL을 직접 작성해서 호출하셔야 합니다.

JPA 기본편을 참고해주세요.

감사합니다.

hym님의 프로필 이미지
hym
질문자

감사합니다! 

hym님의 프로필 이미지
hym
질문자

김영한님 안녕하세요! 

JPQL로 해결이 안되어, 재문의 드립니다. 

아래의 경우에는 tableName이 Entity 명으로 사용해야할 것 같은데요. 

    String jpql = "SELECT t FROM " + tableName+ " t";
    Query query = em.createQuery(jpql);

물리적인 테이블 이름이 aa_2022, aa_2023 이런식으로 년도나 날짜별로 다르게 조회를 하고 싶은데, 이럴 경우에는 불가능한 것으로 보여서요. 해당 부분에 대해서 추가 확인 부탁드려도 될까요? 

hym님의 프로필 이미지
hym

작성한 질문수

질문하기