Hibernate關聯關係對映-----基於連線表的單向一對多對映
阿新 • • 發佈:2019-01-27
實體:
package uni.many2one.jointable; public class Parent { private int id; private String name; private Child child; public Parent() { } public Parent(int id, String name, Child child) { super(); this.id = id; this.name = name; this.child = child; } 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 Child getChild() { return child; } public void setChild(Child child) { this.child = child; } } package uni.many2one.jointable; public class Child { private int id; private String name; public Child(int id, String name) { super(); this.id = id; this.name = name; } public Child() { } 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; } }
hm配置檔案:
<hibernate-mapping> <!-- <class name="org.hibernate.wk.Student" dynamic-insert="true" dynamic-update="true"> --> <class name="uni.many2one.jointable.Parent"> <id name="id" column="did"> <generator class="native" /> </id> <property name="name" type="string" column="name"></property> <join table="parentchild"> <key column="did"></key> <many-to-one name="child" column="cid" not-null="true"></many-to-one> </join> </class> </hibernate-mapping> <hibernate-mapping> <class name="uni.many2one.jointable.Child"> <id name="id" column="id"> <generator class="native" /> </id> <property name="name" type="string" column="name"></property> </class> </hibernate-mapping>
測試檔案:
public class Test { @org.junit.Test public void testAdd() { SessionFactory sf = HibernateUtil.getSessionFactory(); Session session = sf.getCurrentSession(); session.beginTransaction(); Child c1 = new Child(); c1.setName("child1"); Parent mother = new Parent(); mother.setName("Mother"); mother.setChild(c1); Parent father = new Parent(); father.setName("Daddy"); father.setChild(c1); session.save(c1); session.save(mother); session.save(father); session.beginTransaction().commit(); } }
測測試結果:
Hibernate: insert into Child (name) values (?)
Hibernate: insert into Parent (name) values (?)
Hibernate: insert into parentchild (cid, did) values (?, ?)
Hibernate: insert into Parent (name) values (?)
Hibernate: insert into parentchild (cid, did) values (?, ?)