게시글
질문&답변
2021.01.05
연관관계가 없는 테이블 조회 질문드립니다.
감사합니다 영한님!! 기본편도 바로 다시 보겠습니다 잊지않고 답변 달아주셔서 감사합니다^^
- 0
- 4
- 4K
질문&답변
2020.12.24
연관관계가 없는 테이블 조회 질문드립니다.
안녕하세요 영한님 답변 감사합니다! 질문용으로 테이블을 간략하게 올리려고 하다 보니까 조금 수정하면서 약간 말이 꼬였던거 같습니다ㅜㅜ (사진) 현재 테이블 입니다. 모두 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에서 이와 같은 쿼리를 조회 한다면 어떻게 변경해야 할까요? 감사합니다.
- 0
- 4
- 4K
질문&답변
2020.12.04
테이블 생성문제
domain 패키지를 생성할때 jpabook.jpashop.domain 이 아닌 jpabook.domain 으로 생성해서 생긴 문제네요.. 해결했습니다!!!! 다만, 스프링부트가 jpabook.jpashop 하위 부터 인식을 하는걸까요??? 항상 좋은 강의 감사합니다.
- 0
- 2
- 1.5K