躺在沙灘上的小豬

          快樂的每一天

          Hibernate Query

          昨天在用hibernate無意中在后臺發現一個很奇怪的問題,一條SQL一直在重復執行,跑了好半天也沒完成:(
          仔細的看了一下,原來是在查詢字典表,先執行一次總的查詢出id,然后分別根據id分別select,這個字典表的內容太多了,而且本身自關聯的。
          當然我也知道這個只是第一次加載慢,第一次加載同時會被緩存,可是這個項目剛剛開始,這個字典表的改動是很頻繁的,需要根據客戶的需求而經常變動,等穩定下來再該回去。

          先修改為sql:

          ?select?c.categoryid?as?{category.Id},?c.categoryname?as?{category.Name}
          ???????????
          from?Tb_Article_Category?c
          ???????????
          where?c.categoryparentid?is null

          跑了一下,沒有通過:(

          Hibernate:?select?c.categoryId?as?categoryId0_0_,c.categoryName?as?category2_0_0_?
          ?????????????????????????????????? from?tb_article_category??c?where?c.categoryParentId?is?
          null

          [
          2006 - 03 - 20 ? 09 : 12 : 38 , 812 ] - ERROR?(JDBCExceptionReporter.java: 72 ) | Column? ' category3_0_0_ ' ?not?found.

          試著將表中所有的字段都寫出來便沒有錯誤了,不太明白為什么非要我寫出所有字段,可是那并是我想要的,我也怕麻煩。

          目前我的做法是直接返回object [],沒有對每條記錄轉化為ArticleCategory對象。
          select ?c.categoryId,c.categoryName? from ?tb_article_category??c? where ?c.categoryParentId? is ? null ?

          ???????? for ?(Object?obj?:?list)? {
          ????????????Object?[]?str?
          =
          ?(Object[])?obj;
          ????????????System.out.println(String.valueOf(str[
          1
          ]));
          ????????}

          沒有修改之前:

          ?

          修改之后:
          ?

          posted on 2006-03-20 09:15 martin xus 閱讀(359) 評論(0)  編輯  收藏

          主站蜘蛛池模板: 北辰区| 安宁市| 伊春市| 宝兴县| 梁平县| 泾川县| 永济市| 南雄市| 彭阳县| 屏东市| 木兰县| 宝山区| 贵溪市| 平果县| 隆昌县| 内江市| 赤水市| 普格县| 慈利县| 南通市| 南汇区| 三都| 惠州市| 惠安县| 海林市| 静宁县| 莱阳市| 泾源县| 临高县| 宝应县| 田林县| 阜城县| 江陵县| 怀柔区| 淅川县| 陆川县| 永兴县| 龙里县| 乐亭县| 乌拉特后旗| 巍山|