迷失北京

          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 王康 閱讀(90) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 盘山县| 本溪市| 石台县| 云阳县| 华阴市| 古田县| 苏尼特左旗| 都安| 门头沟区| 蒙城县| 赣榆县| 三台县| 绥江县| 泾川县| 宜君县| 东乌珠穆沁旗| 公安县| 阿坝县| 屯昌县| 古丈县| 内黄县| 连城县| 新竹县| 宜宾县| 呼玛县| 紫阳县| 天峨县| 农安县| 美姑县| 黑龙江省| 临沧市| 通河县| 古丈县| 铜川市| 唐海县| 富裕县| 吉水县| 胶南市| 鹤壁市| 苍溪县| 河池市|