隨筆-62  評論-29  文章-0  trackbacks-0

          ORACLE數(shù)據(jù)庫中,字段類型CHAR(8),值12345678

          hibernate中用createSQLQuery方法查詢,返回的list用object[]接收,遍歷取值發(fā)現(xiàn)object[0]輸出值是1,只有一位,其他的沒了。其他字段正確。

          ---------------------------------------------

          查看數(shù)據(jù)庫,發(fā)現(xiàn)其他字段包括VARCHAR,DATE等類型均無問題,只有char類型的出問題。

          char類型是定義長度的,8代表8個字節(jié),節(jié)省空間并且效率要高,缺點是不靈活,長度是定死的,這里用來定義站號,固定8位長度。所以,該數(shù)據(jù)庫這個字段類型能解決問題,但不是最好的辦法,也沒找到真正原因。

          -----------------------------------------------

          查到現(xiàn)在,有了一些眉目,小結(jié)如下:

          1,oracle的char字段在hibernate里映射為character類型,是varchar的子集。

          2,復(fù)雜SQL用createSQLQuery方法查詢沒問題,如果查詢多個字段,遍歷用object[]造型,下標從0開始輸出值,不需要映射文件;如果愿意可以寫一個映射bean,方便取用。

          3,如果查詢SQL中是只有一個字段,那就不能用object[]數(shù)組接收,只能用object類接收,直接輸出object.toString(),即是這個字段的值。

          4,可以用addScalar(String arg,Type type)方法定義要返回的字段類型,如

          s.createSQLQuery(shuiQingHQL).addScalar("STCD",Hibernate.STRING).addScalar("STNM");

          這樣就解決了CHAR字段類型只出一位字符的問題。

          但是需要把其他字段也addScalar()進來!

          5,addScalar(String arg)里的參數(shù)是需要大寫的!

          buffer.append(" select t1.id, t1.Mdn, t1.opType , t1.SubscriptionTime from GDCU_QUEUECDR t1, (select  Mdn,  max(SubscriptionTime) as t2time  from GDCU_QUEUECDR  group by Mdn)  t2 where t1.Mdn =t2.Mdn  and t1.SubscriptionTime =t2.t2time ");
          //search.getWhereByMdisn(buffer, "su");
            Query query = this.getSession().createSQLQuery(buffer.toString())
                    .addScalar("ID", Hibernate.INTEGER) 
              .addScalar("MDN", Hibernate.STRING)
              .addScalar("OPTYPE",Hibernate.STRING)
              .addScalar("SUBSCRIPTIONTIME",Hibernate.STRING);
            List list = query.list();



          posted on 2008-12-24 11:40 閱讀(2966) 評論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 吴忠市| 同德县| 成武县| 崇阳县| 伽师县| 岳普湖县| 琼海市| 沧源| 嵊泗县| 玉溪市| 安平县| 仙游县| 巩义市| 德兴市| 漳平市| 白城市| 长岭县| 桃园市| 咸阳市| 海南省| 庆云县| 鸡东县| 山东| 云浮市| 右玉县| 贵州省| 苍山县| 张掖市| 德庆县| 侯马市| 宾阳县| 黄陵县| 繁峙县| 阳西县| 定结县| 介休市| 鄂托克前旗| 海伦市| 镇平县| 陆丰市| 永善县|