2012-04-17 5 views
2

나는 다음과 같은 매핑이 있습니다@JoinTable 매핑을 사용할 때 FK 이름을 지정하는 방법은 무엇입니까?

//... 
@Table(name="A") 
public class A{ 
    @ManyToMany(fetch = FetchType.LAZY) 
    @JoinTable(name = "A_B", joinColumns = {@JoinColumn(name = "A_ID")}, inverseJoinColumns = {@JoinColumn(name = "B_ID")}) 
    public Set<B> getBs() { 
      return this.meals; 
     } 
    //... 
} 

//... 
@Table(name="B") 
public class B{ 
    private int id; 
    private String description; 
    //... 
} 

어떻게 테이블 "A_B"의 외래 키의 이름을 지정할 수 있습니까? (FK_A_ID 및 FK_B_ID) 사전에

감사합니다, Neuquino

답변

2

당신은 조인 테이블의 외래 키 제약 조건의 이름을 지정 @ForeignKey를 사용할 수 있습니다. 예를 들어

:

@ForeignKey(name="FK_A_ID" , inverseName="FK_B_ID") 
@JoinTable(name = "A_B", joinColumns = {@JoinColumn(name = "A_ID")}, inverseJoinColumns = {@JoinColumn(name = "B_ID")}) 
public Set<B> getBs() { 
     return this.meals; 
} 

을 표 A_B 다음 구조를 갖는다 :

열에 표 A 국지적 이름의 기본 키의 외래 키 제약을 갖는다 A_ID라고
  • 이 외래 키는 FK_A_ID

  • 이 외부 키의 표 B 국지적 인 이름의 기본 키 외래 키 제약 조건이내가 제약 조건의 이름, 열이 아닌 이름을 변경하려는 FK_B_ID

+0

입니다. 간단한 속성의 경우 @ForeignKey를 사용하지만 JoinTable의 경우이를 수행하는 방법을 모른다. – Neuquino

+0

@Neuquino가 전에 질문을 잘못 이해했다. 단지 –

+0

@KenChan works가 좋다. – Kakawait

관련 문제