posts - 165, comments - 198, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          日歷

          <2007年12月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          公告

          由于時間問題,
          blog上一些表達都不太好。

          在此我盡量把我參考的原文給大家,
          與大家學習。^_^
          最近在維護www.aygfsteel.com\Skynet 腳本中
          有什么技術問題不會,
          我很愿意和大家討論!
          多交流快成長
          liukaiyi@gmail.com


          文章檔案

          相冊

          搜索

          •  

          最新評論

          hibernate 查詢語句總結

          Posted on 2007-12-10 12:52 G_G 閱讀(1293) 評論(0)  編輯  收藏 所屬分類: hibernate
          表關系 T1oo ->ont-to-many-> T2oo (t1oo.id-t2oo.aid)

          1.單條select延遲加載
          ????????Iterator?it?=?session.createQuery("from?T1oo?").iterate();
          ????????
          while(it.hasNext()){
          ????????????T1oo?t1?
          =?(T1oo)it.next();
          ????????????t1.getName();
          ????????}
          /*運行語句?n+1
          這就只加載 id
          Hibernate:?select?t1oo0_.id?as?col_0_0_?from?t1oo t1oo0_
          此是在 t1.getName(); 延遲加載的
          Hibernate:?select?t1oo0_.id?as?id0_,?t1oo0_.name?as?name0_0_?from?t1oo?t1oo0_?where?t1oo0_.id=?
          Hibernate:?select?t1oo0_.id?as?id0_,?t1oo0_.name?as?name0_0_?from?t1oo?t1oo0_?where?t1oo0_.id=?
          */

          2.級連查詢:
          1)set排序? <set ... order-by="avg desc" ...> 從大到小
          2)batch-size="10" 用法是
          ??? select * from t2oo? where aid in (?,?,?....)
          3)

          如果想忽略延遲,并有一定邏輯全部加載,這有兩中解決辦法:
          1).內連
          mysql>?select???*
          ????
          ->?from?t1oo?t1oo0_?inner?join?t2oo?t2ooset1_?on?t1oo0_.id=t2ooset1_.aid;
          +----+-----------+----+-----+------+---------+
          | id | name????? | id | avg | aid? | version |
          +----+-----------+----+-----+------+---------+
          |? 1 | liukaiyi? |? 1 |? 23 |??? 1 |?????? 1 |
          |? 1 | liukaiyi? |? 2 |? 24 |??? 1 |?????? 1 |
          |? 1 | liukaiyi? |? 3 |? 25 |??? 1 |?????? 1 |
          |? 2 | liukaiyi2 |? 4 |? 26 |??? 2 |?????? 0 |
          +----+-----------+----+-----+------+---------+

          ?
          ? ? ? ? Iterator?it?=?new?HashSet(session.createQuery("from?T1oo?t1?inner?join?fetch?t1.t2ooSet?t2where t2.id<=3").list()).iterator();
          ????????
          while(it.hasNext()){
          ????????????T1oo?t1?
          =?(T1oo)it.next();
          ????????????System.out.println(t1.getName());
          ????????????
          ????????????
          for(Iterator?itr=t1.getT2ooSet().iterator();itr.hasNext();?){
          ????????????????T2oo?t2?
          =?(T2oo)itr.next();
          ????????????????System.out.println(
          "??"+?t2.getAvg()?);
          ????????????}
          ????????}
          結果是:
          Hibernate:?select?t1oo0_.id?as?id0_,?t2ooset1_.id?as?id1_,?t1oo0_.name?as?name0_0_,?t2ooset1_.version?as?version1_1_,?t2ooset1_.avg?as?avg1_1_,?t2ooset1_.aid?as?aid1_1_,?t2ooset1_.aid?as?aid0__,?t2ooset1_.id?as?id0__?from?t1oo?t1oo0_?inner?join?t2oo?t2ooset1_?on?t1oo0_.id=t2ooset1_.aid?where?t2ooset1_.id<=3
          liukaiyi
          ??
          24
          ??
          23
          ??
          25

          主站蜘蛛池模板: 纳雍县| 招远市| 乐安县| 和顺县| 磴口县| 定陶县| 金华市| 黎城县| 江川县| 连江县| 闵行区| 玉林市| 渑池县| 敦化市| 洱源县| 兴隆县| 平阳县| 永昌县| 鸡西市| 周至县| 鹤山市| 永年县| 威宁| 缙云县| 安阳县| 绿春县| 普安县| 双桥区| 洪湖市| 乌海市| 九江县| 道真| 天柱县| 建湖县| 河东区| 长武县| 铅山县| 安宁市| 保亭| 资中县| 屏南县|