如何在使用@JoinTable映射时指定FK名称?

时间:2012-04-17 19:37:02

标签: java oracle hibernate

我有以下映射:

//...
@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

1 个答案:

答案 0 :(得分: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_ID的列,它对表A的主键具有外键约束。此外键的名称为FK_A_ID

  • 一个名为B_ID的列,它对表B的主键具有外键约束。此外键的名称为FK_B_ID