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

          -- 通過 InsuredIn 查詢 累計類別 

          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ù)庫時,我們要改為:

          from ReMaster as rm left join rm.reDetails as rd 


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


          /**
           * description: 通過被保人號碼查詢再保明細(xì)
           * 
           * 
          @param insuredId
           *            被保人身份證號 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中的對象時用對象數(shù)組接,因為返回的是兩個對象:



              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(); // 用於存儲公司別信息
                  rd = new ReDetail();
                  rm 
          = (ReMaster) (obj[0]);
                  rd 
          = (ReDetail) (obj[1]);

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

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

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

          常用鏈接

          留言簿(9)

          我參與的團(tuán)隊

          隨筆分類(245)

          隨筆檔案(239)

          文章分類(3)

          文章檔案(3)

          收藏夾(576)

          友情鏈接

          搜索

          •  

          積分與排名

          • 積分 - 459381
          • 排名 - 114

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 牟定县| 高雄县| 甘洛县| 鄱阳县| 鹤山市| 山丹县| 孟州市| 探索| 改则县| 廊坊市| 双辽市| 津市市| 西藏| 汤阴县| 宜都市| 宁陕县| 资讯 | 屏东县| 田阳县| 嵩明县| 贵南县| 昭觉县| 马山县| 江阴市| 文水县| 吉木乃县| 泸西县| 昭觉县| 全椒县| 宁蒗| 大荔县| 海门市| 柳江县| 时尚| 抚松县| 泸溪县| 哈巴河县| 调兵山市| 雷山县| 武川县| 鞍山市|