【第22期】观点:IT 行业加班,到底有没有价值?

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高效查询,只查询部分/指定字段

公司使用 DetachedCriteria detachedCriteria = DetachedCriteria.forClass(PeBulletin.class); detachedCrite...

hql语句不能用于插入数据

使用HQL语句来完成插入操作是不能实现的,不管你使用insert into....values...还是insert into.....select.....都不行 原因:因为Hibernate的H...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

hibernate查找表中id最大的对象

直接上例子: @SuppressWarnings("unchecked") @Override public Integer queryMaxId() { String hql = "sele...
  • baicp3
  • baicp3
  • 2013-12-10 18:54
  • 1906

Hibernate查询返回list对象分析学习

原文章地址 在一次开发中我需要从Hibernate查询返回List对象中(注:这个list对象并非一个完整的model类,而是多表查询拼凑的一些字段),取出部分数据在做一次筛选操作。但list只是...

在hibernate中查询使用List,Map和类对象定制返回类型

在使用hibernate进行查询时,使用得最多的还是通过构建hql进行查询了。在查询的过程当中,除使用经常的查询对象方法之外,还会遇到查询一个属性,或一组聚集结果的情况。在这种情况下,我们通常就需要对...

hibernate中对象的三种状态

hibernate中对象的三种状态

Hibernate 将表连接查询和根据条件查询出来的对象封装成另一个对象。

Hibernate 将表连接查询和根据条件查询出来的对象封装成另一个对象。 sql="select count(*) from user"; SQLQuery query = (SQLQu...

hibernate将普通查询的sql结果集转成对象列表

在ssh2开发中遇到,数据库中并没有设置表的外键关系,用hibernate的hql就不能达到关联查询的效果。 现在只能写sql关联,再写代码把结果集转成对象列表 。 现在用     SQLQuery....

【hibernate】——hql简单属性+实体对象查询

最近一直在研究hibernate,真是觉得越深入乐趣越多,由衷佩服hibernate的开发者,真正的体验到什么时灵活自如!真的很喜欢!     本文小编主要讲解hibernate中原生sql在查询简单...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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