從制造到創(chuàng)造
          軟件工程師成長(zhǎng)之路
          posts - 292,  comments - 96,  trackbacks - 0
          通過T-SQL,我們左聯(lián)(內(nèi)聯(lián)、右連類似)的查詢語法如下:

          -- 通過 InsuredIn 查詢 累計(jì)類別 

          select * from ris.re_master as rm left join ris.re_detail as rd on rm.REINSURANCE_NO=rd.REINSURANCE_NO
              
          where rd.INSURED_ID='A120670116'
              
          order by rm.POLICY_NO asc, rm.POLICY_SEQNO asc
              ;


          但是使用 HSQL 查詢數(shù)據(jù)庫時(shí),我們要改為:

          from ReMaster as rm left join rm.reDetails as rd 


          Hibernate 會(huì)自動(dòng)找相同的鍵,不用on,而且關(guān)聯(lián)表要寫成:rm.reDetails


          /**
           * description: 通過被保人號(hào)碼查詢?cè)俦C骷?xì)
           * 
           * 
          @param insuredId
           *            被保人身份證號(hào) String
           * 
          @return List 結(jié)果列表
           * 
          @throws DbAccessException
           *             數(shù)據(jù)庫異常
           
          */
          public List selectReMasterDetail(String insuredId) 
              
          throws DbAccessException {
              
          if (DEBUGLOG.isDebugEnabled()) {
                  DEBUGLOG.debug(
          "[ReDetailDao]"
                          
          + "[Function:selectReMasterDetail][Begin]");
              }
              StringBuffer hqlRd 
          = new StringBuffer();

              hqlRd.append(
          " from ReMaster as rm left join rm.reDetails as rd " +
                      
          "where 1=1");

              
          if (insuredId != null) {
                  hqlRd.append(
          " and rd.insuredId = '" + insuredId + "'");
              }
              
              hqlRd.append(
          " order by rm.policyNo asc, rm.policySeqno asc");

              
          if (DEBUGLOG.isDebugEnabled()) {
                  DEBUGLOG.debug(
          "[ReDetailDao][Function:selectReMasterDetail][End]");
              }
              
              
          return this.createQuery(hqlRd.toString());
          }

          在Service層進(jìn)行調(diào)用:
          // 通過 InsuredId 查詢ReMaster檔和ReDetail檔
          rmdList = rdDao.selectReMasterDetail(iqVo.getInsuredId());

          取List中的對(duì)象時(shí)用對(duì)象數(shù)組接,因?yàn)榉祷氐氖莾蓚€(gè)對(duì)象:



              Object[] obj = null;
              ReDetail rd 
          = null;
              ReMaster rm 
          = null;
              
          int rmdSize = 0;
              
          if (rmdList != null) {
                  rmdSize 
          = rmdList.size();
              }
              
          for (int rmdIndex = 0; rmdIndex < rmdSize; rmdIndex++) {
                  obj 
          = new Object[2];
                  obj 
          = (Object[])rmdList.get(rmdIndex);
              
                  rm 
          = new ReMaster(); // 用於存儲(chǔ)公司別信息
                  rd = new ReDetail();
                  rm 
          = (ReMaster) (obj[0]);
                  rd 
          = (ReDetail) (obj[1]);

          這樣就可以處理得到的ReMaster對(duì)象和ReDetail對(duì)象了。
          posted on 2007-07-18 11:25 CoderDream 閱讀(2462) 評(píng)論(1)  編輯  收藏 所屬分類: 經(jīng)驗(yàn)點(diǎn)滴

          FeedBack:
          # re: HSQL 中的左聯(lián)查詢
          2009-04-25 10:19 | meidao
          正好用到這里,學(xué)習(xí)了,3Q  回復(fù)  更多評(píng)論
            

          <2007年7月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          常用鏈接

          留言簿(9)

          我參與的團(tuán)隊(duì)

          隨筆分類(245)

          隨筆檔案(239)

          文章分類(3)

          文章檔案(3)

          收藏夾(576)

          友情鏈接

          搜索

          •  

          積分與排名

          • 積分 - 458383
          • 排名 - 114

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 错那县| 鄂尔多斯市| 澄江县| 临漳县| 修文县| 封丘县| 灵武市| 朝阳县| 长泰县| 邵东县| 壶关县| 墨江| 精河县| 阳原县| 嘉峪关市| 比如县| 夹江县| 龙海市| 翼城县| 六盘水市| 名山县| 台南市| 新野县| 太保市| 安远县| 高清| 肥城市| 沛县| 大方县| 南汇区| 阿坝县| 梁河县| 潞城市| 临武县| 金秀| 右玉县| 北京市| 山丹县| 马边| 元朗区| 大方县|