<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    溫馨提示:您的每一次轉載,體現了我寫此文的意義!!!煩請您在轉載時注明出處http://www.tkk7.com/sxyx2008/謝謝合作!!!

    雪山飛鵠

    溫馨提示:您的每一次轉載,體現了我寫此文的意義!!!煩請您在轉載時注明出處http://www.tkk7.com/sxyx2008/謝謝合作!!!

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      215 Posts :: 1 Stories :: 674 Comments :: 0 Trackbacks
     

    Hibernate級聯查詢(HQL)

    拿雇員(Employee)與部門(Department)來舉例子說明

    1.1    數據庫模型

    1.1.1          Employee

    DROP TABLE IF EXISTS employee;

    CREATE TABLE employee (

     id int(11) NOT NULL auto_increment,

     empname varchar(255) default NULL,

     empage int(11) default NULL,

     context varchar(255) default NULL,

     deptid int(11) default NULL,

     PRIMARY KEY (id),

     KEY FK4722E6AEAD9148B6 (deptid)

    ) ENGINE=InnoDB DEFAULT CHARSET=gbk;

    1.1.2          Department

    DROP TABLE IF EXISTS department;

    CREATE TABLE department (

     id int(11) NOT NULL auto_increment,

     deptname varchar(255) default NULL,

     PRIMARY KEY (id)

    ) ENGINE=InnoDB DEFAULT CHARSET=gbk;

    1.2    Java

    publicclass Employee

    {

        private Integer id;

        private String empname;

        private Integer empage;

        private String context;

        private Integer deptid;

        private Department department=new Department();

          //此處省略set()get()方法

    }

    publicclass Department

    {

        private Integer id;

        private String deptname;

        private Set<Employee> employeeSet=new HashSet<Employee>();

    //此處省略set()get()方法

    }

    1.3    映射文件

    <hibernate-mapping package="com.dl.bean">

        <class name="Employee" table="employee">

             <id name="id" >

                 <generator class="native"/>

             </id>

             <property name="empname"/>

             <property name="empage"/>

             <property name="context" />

             <property name="deptid" insert="false" update="false"/>

             <many-to-one name="department" column="deptid" cascade="all" class="Department" />

        </class>

        </hibernate-mapping>

    <hibernate-mapping package="com.dl.bean">

        <class name="Department" table="department">

             <id name="id" >

                 <generator class="native"/>

             </id>

             <property name="deptname" />

                 <set name="employeeSet">

                     <key column="deptid"></key>

                     <one-to-many class="Employee"/>

                 </set>

        </class>

        </hibernate-mapping>

    1.4    在寫Hibernate級聯查詢的HQL語句時,與傳統的JDBC方式有著本質的區別

    1.4.1          JDBC級聯寫法

    SELECT * FROM employee INNER JOIN department ON employee.deptid= department.id

    1.4.2          HQL級聯寫法

    select

    employee.id,

    employee.empname,

    employee.empage,

    employee.context,

    employee.department.deptname

    from

    Employee employee

    inner join employee.department (此處與前文中Employee類中的屬性名一致)

    order by employee.id desc

    注意紅色字體部分,在傳統的SQL語句中inner join后面跟級聯的表,但在HQLinner join后面跟能反映出級聯關系的字段屬性(pojo中的名字必須高度保持一致),當存在級聯時,Hibernate查詢結果為一對象數組,其數組的長度取決于selectfrom之間字段的個數。

    1.5    注意分析下面三條語句看有什么不同

    SQLQuery方式

    sqlquery=session.createSQLQuery("select employee.id,employee.empname,employee.empage,employee.context,department.deptname from employee inner join department on employee.deptid=department.id");

    Query方式:

    session.createQuery("select employee.id,employee.empname,employee.empage,employee.context,employee.department.deptname from Employee employee inner join employee.department order by employee.id desc");

    Query方式:

    Query query=session.createQuery("select employee.empname, employee.department from Employee as employee order by employee.id desc");


    電子文檔下載
    posted on 2009-11-25 16:24 雪山飛鵠 閱讀(5193) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 精品剧情v国产在免费线观看 | 亚洲日韩国产精品无码av| 久久成人18免费网站| 国产日韩成人亚洲丁香婷婷| 精品成人一区二区三区免费视频 | 亚洲欧洲日本在线| 亚洲AV无码专区亚洲AV桃| 免费激情视频网站| 欧洲亚洲综合一区二区三区| 亚洲?V无码乱码国产精品 | 亚洲AV午夜福利精品一区二区| 黄色免费在线网站| 91久久亚洲国产成人精品性色| 一区二区三区福利视频免费观看| 亚洲视频在线观看网址| 欧美最猛性xxxxx免费| 亚洲国产欧洲综合997久久| 宅男666在线永久免费观看| 男女啪啪免费体验区| 国产亚洲精品岁国产微拍精品| 久久99青青精品免费观看| 亚洲人成片在线观看| 国产成人青青热久免费精品| 久久国产免费直播| 久久精品国产亚洲AV高清热| 成年女人免费碰碰视频| 一进一出60分钟免费视频| 亚洲高清在线视频| 成人免费777777| 国产免费久久精品丫丫| 亚洲最大在线视频| 亚洲国产精品尤物yw在线| 免费A级毛片无码专区| 最新亚洲人成无码网www电影| 国产亚洲精品精华液| 成人性生交大片免费看无遮挡| 七次郎成人免费线路视频| 亚洲人成日本在线观看| 亚洲国产aⅴ综合网| 亚州免费一级毛片| 国产vA免费精品高清在线观看|