hibernate之映射關係一對多(自身關聯)

自身關聯注意的問題:
   1、關聯多的一方必須是隻有一個父類節點,如果存在多個父類節點,那麼就不能採用自身關聯,(字段冗餘數據太多)
   2、自身關聯可以節省表的設計、
   3、一的一端爲父節點,沒有外鍵
   4、多的一端爲子節點,並且存在外鍵
   5、關聯一對多自身關聯外鍵key、mary-to-one、指向同一個對象同時也是同一外鍵字段
  代碼配置:
  
   1、創建表
    create table t_user(
    u_id varchar(255),
    u_name varchar(255),
    u_age Integer,
    u_price double(5,2),
    uc_id varchar(255),//外鍵
    primary key(u_id)
    );
    
   2、java-pojo類
     public class UserT  implements Serializable{
     private String id;
     public String name;
     private Integer age;
     private double price;
     //父類
     private UserT userTsup;
     //子類
     private Set<UserT> userchild = new HashSet<UserT>();
     
     public UserT(){}
     省略get、set方法
     }
    3、配置文件
     <?xml version="1.0"?>
      <!DOCTYPE hibernate-mapping PUBLIC
              "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
              "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
      
      <hibernate-mapping package="com.wolf.pojo.oneToone" auto-import="false">
          <class name="UserT" table="t_user">
          <!-- 多對一:只有單項    -->
              <id name="id" column="u_id">
              </id>
              <property name="name" column="u_name"/>
              <property name="age" column="u_age"/>
              <property name="price" column="u_price"/>
             
              <many-to-one name="userTsup" class="UserT" column="uc_id" lazy="false" cascade="all"></many-to-one>
           
           <set name="userchild" table="t_user" cascade="all" >
            <key column="uc_id"></key>
            <one-to-many class="UserT"/>
           </set>
          </class>
      </hibernate-mapping>
發佈了46 篇原創文章 · 獲贊 9 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章