Hibernate 注解多对一 要求在多那边产生一个外键而不会另外产生一个表

在使用hibernate注解的时候,我们映射一对多时,有时候莫名其妙的产生了两张表,其中一张表是A_B,这并不符合数据库中多的一方放置一个外键的原则,那么如何控制只产生一个表呢,请看下面的例子:

多的那方:

@ManyToOne(cascade = CascadeType.ALL, optional = false)
@JoinColumn(name="info_id", referencedColumnName="id")

public HlInfo getHlInfo() {
  return hlInfo;
}

 

一的一方:

@OneToMany(targetEntity = HouseImg.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name="info_id",updatable = false)

public Set<HouseImg> getHouseImgSet() {
  return houseImgSet;
}

①一定要让两个JoinColumn有共同的name,才不会产生两个表。

②如果没有添加蓝色字体部分,在更改了“一”方时,会取消所有与一方关联的外键(多方的外键变为NULL),所以要记得加上

 

posted @ 2013-11-23 20:38  无忧之路  阅读(427)  评论(0编辑  收藏  举报
无忧之路