昨天在用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 ]));
        }

没有修改之前:

 

修改之后:
 
分享到:
评论