從制造到創(chuà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 會自動找相同的鍵,不用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í)用對象數(shù)組接,因?yàn)榉祷氐氖莾蓚€(gè)對象:



              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 閱讀(2462) 評論(1)  編輯  收藏 所屬分類: 經(jīng)驗(yàn)點(diǎn)滴

          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)隊(duì)

          隨筆分類(245)

          隨筆檔案(239)

          文章分類(3)

          文章檔案(3)

          收藏夾(576)

          友情鏈接

          搜索

          •  

          積分與排名

          • 積分 - 458389
          • 排名 - 114

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 冀州市| 米易县| 清新县| 曲松县| 建平县| 防城港市| 东山县| 卢氏县| 安仁县| 蓝田县| 博爱县| 漳平市| 南阳市| 宁安市| 花莲市| 株洲县| 迁西县| 波密县| 新巴尔虎左旗| 吴堡县| 江陵县| 临潭县| 全南县| 丹寨县| 彰武县| 昌乐县| 高要市| 重庆市| 柯坪县| 巴里| 从化市| 贵港市| 理塘县| 子长县| 揭阳市| 郯城县| 华安县| 五寨县| 延长县| 恩平市| 昌平区|