hql语言处理获取对象部分信息

最近做了一个网站,在运行一段时间出现内存耗尽,导致服务器宕机,具体问题是:对于一个News新闻对象,在新闻列表页面,我们只要得到其主键、标题、发布日期和浏览次数几个属性,原来的代码直接使用这样的语句:
 
Java代码
    FROM News WHERE +条件语句 
[java] view plaincopy
    FROM News WHERE +条件语句  

  获取了新闻对象列表,取出了新闻对象的全部属性,但实际上并不需要其内容和其他的属性,因为内容都是比较大的,所以会浪费不少内存。
    我使用的是hibernate3.2,hql语句查询出来的都应该是对象的。
    把hql改写成这样——
 
Java代码
    select id,title,pubDate,num from News where……" 
[java] view plaincopy
    select id,title,pubDate,num from News where……"  

来实现,但是,这样查询出来的是一个对象数组,需要新建一个News对象,然后把属性一一赋值进入,太麻烦了。
google了以下(懒得看文档了),发现可以通过如下方法解决:

1.首先在News实体里面加一个构造函数,把要查询出来的字段当参数传进去
Java代码
    public News(intid,String title,String pubDate,int num){         
    }   

[java] view plaincopy
    public News(intid,String title,String pubDate,int num){       
    }   

 
2.然后改写
Java代码

    hql="select new News(id,title,pubdate,num) from Document where……"  
[java] view plaincopy
    hql="select new News(id,title,pubdate,num) from Document where……"  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值