迷失北京

          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)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 永胜县| 南江县| 延寿县| 奉新县| 茌平县| 江达县| 辽源市| 精河县| 甘孜县| 白城市| 彭山县| 镇原县| 浙江省| 漯河市| 甘孜县| 盈江县| 海林市| 五莲县| 涟源市| 醴陵市| 浮梁县| 将乐县| 北川| 剑河县| 神农架林区| 托克逊县| 定兴县| 家居| 湄潭县| 洪泽县| 崇文区| 天门市| 星座| 屯昌县| 霍城县| 靖江市| 贞丰县| 乌拉特后旗| 象州县| 广河县| 沅江市|