1.基于外键的双向一对一
- 基于外键的双向一对一,外键可以存放在任意一端,只需在外键表的那端添加注解@OneToOne,@JoinColumn
- 在主表中也应添加注解@OneToOne,同时设置mappedBy属性(放弃控制关联关系,否则会生成额外的关联关系,引起性能下降)
- 主要代码及例子
- 从表@OneToOne(cascade={CascadeType.ALL}) @JoinColumn(name="")
- 主表@OneToOne
<span style="font-family:Arial;">//表一
@Entity
@Table(name = "T_JC_test1")
@Where(clause="recordStatus='"+GlobalConstant.FLAG_Y+"'")
public class Test1 extends BusinessEntity{
private static final long serialVersionUID = 2535128385272676564L;
private String name;
private Test2 tese2; //引用表二
public String getName() {
return name;
}
@OneToOne(cascade={CascadeType.ALL})
@JoinColumn(name="test1ID")
public Test2 getTese2() {
return tese2;
}
public void setTese2(Test2 tese2) {
this.tese2 = tese2;
}
public void setName(String name) {
this.name = name;
}
}
//表二
@Entity
@Table(name = "T_JC_test2")
@Where(clause="recordStatus='"+GlobalConstant.FLAG_Y+"'")
public class Test2 extends BusinessEntity{
private static final long serialVersionUID = -7653945367481001205L;
private String addressDetatil;
private Test1 test1;<span style="white-space:pre"> </span>//引用表一
@OneToOne
public Test1 getTest1() {
return test1;
}
public void setTest1(Test1 test1) {
this.test1 = test1;
}
public String getAddressDetatil() {
return addressDetatil;
}
public void setAddressDetatil(String addressDetatil) {
this.addressDetatil = addressDetatil;
}
}
</span>
2.
有链接表的双向一对一(不推荐使用)