Hibernate3学习笔记(9)—— HQL实现查询对象部分属性

转载 2015年07月09日 19:09:00

用HQL获取部分的实体对象属性
在使用HQL查询中,有时并不需要获取完整的一个实体对象,例如一个实体对象User有三个属性:account, password和email,如果我们只需要获取account和email属性,那么有两种方法可以选择。
1. 用普通的”select user.account, user.email from User as user”,程序片断如下:

    List list = session.createQuery("select user.account, user.email from User as user").list();
    Iterator it = list.iterator();
    while (it.hasNext()) {
      Object[] values = (Object[]) it.next();
      System.out.println(values[0] + " " + values[1]);
    }

这时调用Query类的list方法返回的将是一个每个元素都是一个Object数组的List。如果只获取一个属性,那么返回的List中的每个元素都是String实例。

2.在HQL中用new操作符生成实体对象,例如:”select new User(user.account, user.email) from User as user”,程序片断如下:

 List list = session.createQuery("select new User(user.account, user.email) from User as user").list();
    Iterator it = list.iterator();
    while (it.hasNext()) {
      User user = (User) it.next();
      System.out.println(user.getAccount() + " " + user.getEmail());
    }

这时list方法返回的List中的每一个元素都是User实体对象。这里有三点需要注意的:
a.在HQL语句中需要使用as操作符指定User的别名,并且需要在构造函数的属性前面加上别名;
b.HQL语句中的构造函数在User类中必须要有相应的构造函数;
c.生成的实体对象是VO对象,如果对这些对象调用Session的saveOrUpdate方法将导致插入新的记录,而不是更新记录。

相关文章推荐

【Hibernate步步为营】--hql查询之实体对象查询

实体对象查询是hql查询的基础,作为一种对象查询语言,在查询操作时和sql不同,查询字符串中的内容要使用类名和类的属性名来代替。这种查询方法相对简单,只要有SQL功底,使用hql是很简单的,但是有一些...

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

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

hql查询之实体对象查询

一、实体对象查询         实体对象查询是hql查询的基础,作为一种对象查询语言,在查询操作时和sql不同,查询字符串中的内容要使用类名和类的属性名来代替。这种查询方法相对简单...

Hibernate查询时用HQL动态创建对象

当你在实际的开发过程中,有时候查询的结果只是需要查询一张表中的一部分数据,而不是所有的数据,比如说,我现在有一个需求是这样的:我只需要user的id和name这两个属性的数据,其他的数据暂时不需要,那...

struts的<s:text/>标签

struts2的标签里面的,注意这个标签跟其他的struts2的标签是一样的,都是可以得到Action中传递过来的值的, 大多数的情况下,这个标签是用在多国语言里面的,但是如果你给它传递的不是多国语言...

jpa之hibernate4.2.4之双向关联之一对一、一对多、多对多

hibernate版本4.2.4      oracle 版本11g 本文主要涉及到以下几个知识点:     1.双向关联之一对一     2.双向关联之一对多     3.双向关联之多对多...

Hibernate3学习笔记(4)——Hibernate查询技术之HQL语句

1、session中的get( )和load( )方法来查询对象。但其查询功能有限。 private void testGet(){ //1.初始化,读取配置文件hibernate.c...

hibernate3学习笔记(九)|Query及HQL

示例代码如下: package com.hb3.pack_01;import java.util.Iterator;import java.util.List;import org.hibe...

Hibernate3学习笔记(5)——Hibernate查询技术之Criteria查询

Criteria查询又称为对象查询,它使用一种封装了基于字符串形式的查询语句的API来查询对象。 在使用HQL查询方式,需要定义基于字符串形式的HQL语句,虽然比JDBC代码有所进步,但仍繁琐且不方...

hibernate3学习笔记(三)|数据加载——Session.get/load

Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。其区别在于: 如果未能发现符合条件的记录,get方法返回null,而load方法会抛出...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hibernate3学习笔记(9)—— HQL实现查询对象部分属性
举报原因:
原因补充:

(最多只允许输入30个字)