public class Husband {
private int id;
private String name;
private Wife wife;
@Id
@GeneratedValue
public int getId() {
return id;
}
public String getName() {
return name;
}
@OneToOne
@JoinColumn(name="wifeId") //外键名称
public Wife getWife() {
return wife;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setWife(Wife wife) {
this.wife = wife;
}
}
@Entity
public class Wife {
private int id;
private String name;
private Husband husband;
Hibernate中的MappedBy:
1)只有OneToOne,OneToMany,ManyToMany上才有mappedBy属性,ManyToOne不存在该属性;
2) MappedBy标签一定定义在the owned side(被拥有方),他指向the owning side(拥有方);
3) MappedBy的含义,应理解为,拥有放能够自动维护跟被拥有方的关系。
4)MappedBy跟JoinColumn/JoinTable总是处于互斥的一方。
@OneToOne(mappedBy="wife")
public Husband getHusband() {
return husband;
}
public void setHusband(Husband husband) {
this.husband = husband;
}
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Wife w=new Wife();
w.setName("w");
Husband h=new Husband();
h.setName("h");
h.setWife(w);
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
session.save(w);
session.save(h);
session.getTransaction().commit();