您的位置:首页 > 其它

hql语句实现查询对象部分属性

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


Java代码

FROM News WHERE +条件语句

FROM News WHERE +条件语句


获取了新闻对象列表,取出了新闻对象的全部属性,但实际上并不需要其内容和其他的属性,因为内容都是比较大的,所以会浪费不少内存。

我使用的是hibernate3.2,hql语句查询出来的都应该是对象的。

把hql改写成这样——


Java代码

select id,title,pubDate,num from News where……"

select id,title,pubDate,num from News where……"


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

1.首先在News实体里面加一个构造函数,把要查询出来的字段当参数传进去

Java代码

public News(intid,String title,String pubDate,int num){



}

public News(intid,String title,String pubDate,int num){ 

}



2.然后改写


Java代码

hql="select new News(id,title,pubdate,num) from Document where……"

hql="select new News(id,title,pubdate,num) from Document where……"


这样,查询出来的就是News对象,而且只有主键、标题、发布日期和浏览次数几个属性,其他的为Null。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: