질문&답변
연관관계가 없는 테이블 조회 질문드립니다.
감사합니다 영한님!! 기본편도 바로 다시 보겠습니다 잊지않고 답변 달아주셔서 감사합니다^^
- 좋아요수
- 0
- 댓글수
- 4
- 조회수
- 4248
질문&답변
감사합니다 영한님!! 기본편도 바로 다시 보겠습니다 잊지않고 답변 달아주셔서 감사합니다^^
질문&답변
안녕하세요 영한님 답변 감사합니다! 질문용으로 테이블을 간략하게 올리려고 하다 보니까 조금 수정하면서 약간 말이 꼬였던거 같습니다ㅜㅜ 현재 테이블 입니다. 모두 PK만 지정이 되어있고 FK는 따로 지정이 안되어있습니다. MAP_ADM2 의 테이블의 ADM_CD2 MAP_ADM의 테이블의 ADM_CD2 MAP_CODE의 테이블의 DONG_CODE 3가지 컬럼이 동일 한 값으로 사용하고 있습니다. MAP_ADM2의 엔터티 부분입니다. 위의 1번과 3번의 내용을 합쳐서 질문 드리자면 em .createQuery ( "select m from Map_Adm2 m join fetch m.map_adm where adm_emd_name like :ADM_EMD_NAME" , Map_Adm2. class ) .setParameter ( "ADM_EMD_NAME" , "%" +amd_emd_name+ "%" ) MAP_ADM2 와 MAP_ADM 두가지만 조인해서 조회하였을때는 원하는 값이 잘 나왔습니다. 이번에는 위의 테이블 3가지를 조회하려고하는데 오라클에서 이렇게 조회가 가능했는데 JPA로 변경하려고 합니다. 위의 fetch조인과 같이 " select m from Map_Adm2 Join fetch m.map_adm join fetch m.map_code " 이렇게 해보려고 하니 map_code에 대한 @JoinColumn이 없어서 안되는것 같더라고요. 그래서 @OneToOne ( fetch = FetchType. LAZY , cascade = CascadeType. ALL) @JoinColumn ( name = "ADM_CD2" ) private Map_Adm map_adm ; @OneToOne ( fetch = FetchType. LAZY , cascade = CascadeType. ALL) @JoinColumn ( name = "ADM_CD2" ) private Map_Code map_code ; 이렇게 해보려고 하니 한가지 컬럼에 ADM_CD2 2가지 @JoinColumn 이 안되는걸 알았습니다. 그래서 우선 테스트 할겸 2가지 테이블만 연결해보자 해서 Map_Adm2 엔터티를 이렇게 변경후 public class Map_Adm2 { @Id private String ADM_CD ; private String ADM_EMD_NAME ; private String GEO_X ; private String GEO_Y ; private String CRE_USER ; private String CRE_TIME ; private String ADM_CD2 ; // @JsonIgnore // 조회안되게 하는 어노테이션 주의 @OneToOne ( fetch = FetchType. LAZY , cascade = CascadeType. ALL) private Map_Adm map_adm ; @OneToOne ( fetch = FetchType. LAZY , cascade = CascadeType. ALL) private Map_Code map_code ; } em .createQuery ( "SELECT m FROM Map_Adm2 m, Map_Code c WHERE m.ADM_CD2 = c.DONG_CODE" , Map_Adm2. class ) 이렇게 쿼리를 날려보니 이번에는 java.sql.SQLSyntaxErrorException: ORA-00904: "MAP_ADM2X0_"."MAP_CODE_DONG_CODE": 부적합한 식별자 에러가 났습니다. 수업내용과 같이 연관관계가 테이블에 외래키 컬럼이 모두 있는 상태면 모두 @JoinColumn 으로 하여 join fetch 로 여러개 테이블 조인이 가능할 수 있을것 같은데... 위와 같은 경우에 JPA에서 이와 같은 쿼리를 조회 한다면 어떻게 변경해야 할까요? 감사합니다.
질문&답변
domain 패키지를 생성할때 jpabook.jpashop.domain 이 아닌 jpabook.domain 으로 생성해서 생긴 문제네요.. 해결했습니다!!!! 다만, 스프링부트가 jpabook.jpashop 하위 부터 인식을 하는걸까요??? 항상 좋은 강의 감사합니다.