2012-04-17 50 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其具有外鍵約束的表A .The名稱的主鍵這個外鍵是FK_A_ID

  • 列名爲B_ID它具有外鍵約束本外鍵的表B .The名稱的主鍵是FK_B_ID

+0

我想改變約束的名稱,列的不是名稱。對於簡單的屬性我使用@ForeignKey,但對於JoinTable我不知道該怎麼做。 – Neuquino 2012-04-17 20:01:20

+0

@Neuquino之前誤解了這個問題,只是更新 – 2012-04-18 13:40:54

+0

@KenChan很棒 – Kakawait 2014-07-09 14:51:56

相關問題