實體:
package uni.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 uni.one2one.jointable;public class Wife {private int id;private String name;public Wife() {}public Wife(int id, String name) {super();this.id = id;this.name = name;}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;}}
hbm設定檔:
<hibernate-mapping><class name="uni.one2one.jointable.Husband"><id name="id" column="did"><generator class="native" /></id><property name="name" type="string" column="name"></property><join table="husbandwife"><key column="did"></key><many-to-one name="wife" unique="true" not-null="true" column="wid"></many-to-one></join></class></hibernate-mapping><hibernate-mapping><class name="uni.one2one.jointable.Wife"><id name="id" column="did"><generator class="native" /></id><property name="name" type="string" column="name"></property></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");Husband husband = new Husband();husband.setName("husband");husband.setWife(wife);session.save(wife);session.save(husband);session.beginTransaction().commit();}}
測試結果:
Hibernate: insert into Wife (name) values (?)Hibernate: insert into Husband (name) values (?)Hibernate: insert into husbandwife (wid, did) values (?, ?)