묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실전! 스프링 데이터 JPA
같은 테이블의 외래키와 복합키
안녕하세요 영한님. 항상 강의 잘 듣고있습니다.회사에서 레거시 코드를 엔티티로 변경하다보니 궁금한게 있어 문의드립니다.첫번째 질문혹시 복합키가 3개의 컬럼으로 되어있을 때, 2개의 컬럼이 같은 테이블과 매핑해야 된다면 어떻게 해줘야하는지 알 수 있을까요? @EmbeddedId, @IdClass 둘 다 필드명으로 매핑을 해줘야 하는데, 한 필드밖에 매핑이 안되서 여쭤봅니다.두번째 질문아래 키들이 전부 Enum으로 되어있다면 조인할 때 @Enumrated(STRING) 이 적용이 안되는 것 같은데 어떻게 하면 좋을지 여쭤봅니다.예를 들어,A의 복합키 [a, b, c] 중 [a, b]가 B와 매핑되는 외래키이고, [c]는 C와 매핑되는 외래키입니다.* 여기서 B의 a, b는 B의 PK입니다.* A와 B는 일대다, A와 C 또한 일대다 관계입니다.class A { @Id @Enumerated(STRING) EnumType a; @Id @Enumerated(STRING) EnumType b; @Id @Enumerated(STRING) EnumType c; } class B { @Id @Enumerated(STRING) EnumType a; @Id @Enumerated(STRING) EnumType b; } class C { @Id @Enumerated(STRING) EnumType c; }@EmbeddedId 사용시@Embeddable public class AId implements Serializable { private BId b; @Enumerated(STRING) private EnumType c; } @Embeddable public class BId implements Serializable { @Enumerated(STRING) private EnumType a; @Enumerated(STRING) private EnumType b; } @Entity public class A { @EmbeddedId private AId id; // 쿼리에서 EnumType의 숫자값이 들어갑니다. @ManyToOne(fetch = LAZY) @JoinColumns(value = { @JoinColumn(name = "a"), @JoinColumn(name = "b") }) private B b; }
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
상속관련 문의 드립니다.
안녕하세요. 좋은 강의 감사합니다. 몇가지 질문을 드리겠습니다. 아래와 같은 테이블 연관관계가 있는 경우 외래키가 있는 테이블에서 상속관계를 사용하고자 할때 어떤식으로 하면 될까요? 상속은 슈퍼타입과 서브타입일경우 사용하는걸로 아는데 indic_bas_four_ern 테이블은 RIC 컬럼이 PK에 추가되어 있기 때문에 indic_bas 테이블 상속이 불가능하지 않나요? 복합키일 경우 기존 복합키 구현과 상속일 경우 복합키 구현은 똑같이 처리하면 될까요? 현재는 indic_bas 와 indic_bas_one_ern, indic_bas_two_ern, indic_bas_three_ern 는 OneToOne으로, indic_bas 와 indic_bas_four_ern 는 ManyToOne 으로 설정하였습니다. 감사합니다.