迷失北京

          BlogJava 聯系 聚合 管理
            60 Posts :: 0 Stories :: 13 Comments :: 0 Trackbacks

             在這里舉了一個不太恰當的例子:雙親和孩子。當然舉這個例子也有一定的道理,一個孩子至少有兩個parent,但是例子只是例子,重點不是例子而是配置方法。下面我們看一下配置的詳細步驟:

          實體:

          package uni.many2one;
          
          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;
          	}
          }
          
          package uni.many2one;
          
          
          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;
          	}
          
          }
          

            

          hbm配置文件:

          <hibernate-mapping>
          	<class name="uni.many2one.Child">
          		<id name="id" column="did">
          			<generator class="native" />
          		</id>
          		<property name="name" type="string" column="name"></property>
          	</class>
          
          </hibernate-mapping>
          <hibernate-mapping>
          	<!-- <class name="org.hibernate.wk.Student" dynamic-insert="true" dynamic-update="true"> -->
          	<class name="uni.many2one.Parent">
          		<id name="id" column="did">
          			<generator class="native" />
          		</id>
          		<property name="name" type="string" column="name"></property>
          		
          		<!-- configure the many to one association -->
          		<many-to-one name="child" column="child"></many-to-one>
          	</class>
          
          </hibernate-mapping>
          

            

          測試文件:

          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, child) values (?, ?)
          Hibernate: insert into Parent (name, child) values (?, ?)
          

            

          這里我沒有貼出來表的結構,因為表hibernate會自動生成的,多以就沒有浪費地方。

          hibernate關聯關系映射的配置中務必要搞清楚誰是主動配置方,誰是被配置的,如果搞不清楚很容易在實體操作的時候出現錯誤。尤其是在保存實體的時候,很容易出現引用為空的情況。

          posted on 2011-07-23 10:05 王康 閱讀(88) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 河北区| 色达县| 扎鲁特旗| 秦安县| 舞阳县| 镇平县| 湾仔区| 启东市| 靖安县| 望江县| 文登市| 枣阳市| 浦县| 平顶山市| 犍为县| 天气| 两当县| 丹江口市| 阳东县| 京山县| 育儿| 金秀| 青川县| 绩溪县| 敦煌市| 洞口县| 永昌县| 竹山县| 宁强县| 阿城市| 香港 | 杭州市| 黑水县| 咸丰县| 波密县| 启东市| 泰来县| 凤阳县| 抚松县| 漯河市| 浦县|