Hibernate关联关系配置-----基于连接表的双向一对一映射配置

来源:互联网 发布:在线培训 源码 编辑:程序博客网 时间:2024/04/29 14:32

实体:

package bi.one2one.jointable;public class Husband {private int id;private String name;private Wife wife;public Husband() {}public Husband(int id, String name, Wife wife) {super();this.id = id;this.name = name;this.wife = wife;}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;}public Wife getWife() {return wife;}public void setWife(Wife wife) {this.wife = wife;}}package bi.one2one.jointable;public class Wife {private int id;private String name;private Husband husband;public Wife() {}public Wife(int id, String name, Husband husband) {super();this.id = id;this.name = name;this.husband = husband;}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;}public Husband getHusband() {return husband;}public void setHusband(Husband husband) {this.husband = husband;}}

hbm配置文件:

<hibernate-mapping><class name="bi.one2one.jointable.Husband"><id name="id" column="hid"><generator class="native" /></id><property name="name" type="string" column="name"></property><join table="husbandwife" optional="true"><key column="hid" unique="true"></key><many-to-one name="wife" unique="true" not-null="true" column="wid"></many-to-one></join></class></hibernate-mapping><hibernate-mapping><class name="bi.one2one.jointable.Wife"><id name="id" column="wid"><generator class="native" /></id><property name="name" type="string" column="name"></property><join table="husbandwife" inverse="true" optional="true"><key column="wid" unique="true"></key><many-to-one name="husband" unique="true" not-null="true" column="hid"></many-to-one></join></class></hibernate-mapping>

测试文件:

public class Test {@org.junit.Testpublic void testAdd() {SessionFactory sf = HibernateUtil.getSessionFactory();Session session = sf.getCurrentSession();session.beginTransaction();Wife wife = new Wife();wife.setName("wife");//wife.setHusband(husband);Husband husband = new Husband();husband.setName("husband");husband.setWife(wife);session.save(husband);session.save(wife);session.beginTransaction().commit();}}

测试结果:

Hibernate: insert into Husband (name) values (?)Hibernate: insert into Wife (name) values (?)Hibernate: insert into husbandwife (wid, hid) values (?, ?)