hibernate的HQL查询

hibernate查询指定的字段返回的是一个Object数组,如果查的是一个字段的话就返回Object对象,因为无法直接转换成实体类的对象,所以只能一个个去循环了,,现在有一种比较好的办法是在hql中使用select new 类名(属性1,属性2……) from 实体类,同时在实体类中添加带参的构造方法,参数的个数和顺序与(属性1,属性2……) 保持一致

User对象


  1. package com.sh3.model;

  1. import java.util.Date;

  2. import javax.persistence.Column;
  3. import javax.persistence.Entity;
  4. import javax.persistence.GeneratedValue;
  5. import javax.persistence.Id;
  6. import javax.persistence.Table;
  7. import javax.persistence.Temporal;
  8. import javax.persistence.TemporalType;

  9. /**
  10. * @author Administrator
  11. *
  12. */
  13. @Entity
  14. @Table(name = "users")
  15. public class User implements java.io.Serializable {
  16.         /**
  17.          *
  18.          */
  19.         private static final long serialVersionUID = 1L;
  20.         private Integer id;
  21.         private String name;
  22.         private String password;
  23.         private Integer age;
  24.         private Date birthday;

  25.         public User() {
  26.         };
  27. //要查哪几个字段,就写哪几个字段的构造方法,注意这里的顺序要和后面dao里面的查询顺序要一样
  28.         public User(Integer id, String name, Integer age, Date birthday) {
  29.                 super();
  30.                 this.id = id;
  31.                 this.name = name;
  32.                 this.age = age;
  33.                 this.birthday = birthday;
  34.         }

  35.         //省略get/set方法

  36. }

UserDao

  1.         @Override
  2.         public List<User> findAll() {
  3. //                String queryString = "from User";
  4.                 String queryString = "select new User(id,name,age,birthday) from User";
  5.                 return super.find(queryString);
  6.         }
复制代码

这样查出来的返回的list里面就是User对象了,而不是Object数组了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值