Hibernate關聯關係配置-----基於連線表的雙向一對一對映配置
阿新 • • 發佈:2019-02-14
實體:
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.Test public 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 (?, ?)