해결된 질문
작성
·
332
2
안녕하세요 김영한님 강의 정말 잘보고있습니다. 다름아니라 @MappedSuperclass에 대한 질문인데요
1.PK필드도 @MappedSuperclass 설정된 클래스로 뺄 수 있는지 궁금합니다. 같은 타입이고 PK값 생성전략도 같으면 빼는 것도 나쁘지 않은 것 같아서요
2. 그리고 PK 필드가 빼는 것이 가능한 상태에서 또다른 궁금증은 객체기준으로는 같은 타입과 필드명을 똑같이 사용하고 있는데 DB기준으로는 컬럼명을 다르게 사용하고 있는 경우에도 매핑이 가능한지 궁금합니다.
예를들어 Member 테이블은 PK로 MEMBER_ID를 쓰고 TEAM은 TEAM_ID를 쓰는데 객체에서는 Long id;로 참조하는 경우 입니다.
PK 필드가 아니라고 하더라도 공통된 역할을 하는 필드를 쓰는데 테이블마다 컬럼명이 다른 경우에는 매핑이 가능하다면 어떻게 매핑가능한지 궁금합니다.
답변 2
1
1
안녕하세요. 갓다귀갓장국님^^
바로 답변을 달아드릴께요.
1.PK필드도 @MappedSuperclass 설정된 클래스로 뺄 수 있는지 궁금합니다. 같은 타입이고 PK값 생성전략도 같으면 빼는 것도 나쁘지 않은 것 같아서요
-> 네 가능합니다. 스프링 데이터 JPA는 비슷한 방법으로 @MappedSuperclass를 상속받은 AbstractPersistable 클래스를 제공합니다.
2. 그리고 PK 필드가 빼는 것이 가능한 상태에서 또다른 궁금증은 객체기준으로는 같은 타입과 필드명을 똑같이 사용하고 있는데 DB기준으로는 컬럼명을 다르게 사용하고 있는 경우에도 매핑이 가능한지 궁금합니다.
@AttributeOverride라는 속성을 사용하면 변경이 가능합니다. 자세한 내용은 다음 링크를 참조해주세요.
https://stackoverflow.com/questions/29214859/cannot-override-default-id-column-spring-data-jpa
감사합니다.