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

用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方法将导致插入新的记录,而不是更新记录。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值