隨筆-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é)省空間并且效率要高,缺點(diǎn)是不靈活,長度是定死的,這里用來定義站號,固定8位長度。所以,該數(shù)據(jù)庫這個字段類型能解決問題,但不是最好的辦法,也沒找到真正原因。

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

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

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

          2,復(fù)雜SQL用createSQLQuery方法查詢沒問題,如果查詢多個字段,遍歷用object[]造型,下標(biāo)從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()進(jìn)來!

          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)航:
           
          主站蜘蛛池模板: 徐闻县| 合肥市| 芮城县| 通河县| 桦甸市| 吉林市| 信阳市| 上栗县| 孝感市| 平陆县| 海门市| 孝昌县| 习水县| 九台市| 剑川县| 晋宁县| 丽江市| 马龙县| 长垣县| 西宁市| 宁乡县| 文水县| 九龙坡区| 九江县| 沧州市| 巴中市| 古田县| 中阳县| 邵东县| 新宾| 临湘市| 安丘市| 合川市| 库车县| 湘潭县| 九寨沟县| 龙陵县| 金川县| 巧家县| 若尔盖县| 丹东市|