躺在沙灘上的小豬

          快樂的每一天

          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 閱讀(357) 評論(0)  編輯  收藏

          主站蜘蛛池模板: 通渭县| 新竹市| 昂仁县| 台北市| 宜兴市| 繁昌县| 玉林市| 南木林县| 周至县| 江川县| 湖口县| 梁平县| 普兰店市| 镇宁| 塘沽区| 会理县| 蚌埠市| 遵义市| 肥乡县| 清新县| 兴海县| 玉环县| 易门县| 岚皋县| 额尔古纳市| 镇宁| 望都县| 句容市| 安化县| 桂阳县| 来凤县| 壤塘县| 白河县| 重庆市| 乌恰县| 赤水市| 阳江市| 鄄城县| 阿拉善左旗| 涡阳县| 新河县|