hibernate查询指定的字段返回的是一个Object数组,如果查的是一个字段的话就返回Object对象,因为无法直接转换成实体类的对象,所以只能一个个去循环了,,现在有一种比较好的办法是在hql中使用select new 类名(属性1,属性2……) from 实体类,同时在实体类中添加带参的构造方法,参数的个数和顺序与(属性1,属性2……) 保持一致
User对象
- package com.sh3.model;
- import java.util.Date;
- import javax.persistence.Column;
- import javax.persistence.Entity;
- import javax.persistence.GeneratedValue;
- import javax.persistence.Id;
- import javax.persistence.Table;
- import javax.persistence.Temporal;
- import javax.persistence.TemporalType;
- /**
- * @author Administrator
- *
- */
- @Entity
- @Table(name = "users")
- public class User implements java.io.Serializable {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private Integer id;
- private String name;
- private String password;
- private Integer age;
- private Date birthday;
- public User() {
- };
- //要查哪几个字段,就写哪几个字段的构造方法,注意这里的顺序要和后面dao里面的查询顺序要一样
- public User(Integer id, String name, Integer age, Date birthday) {
- super();
- this.id = id;
- this.name = name;
- this.age = age;
- this.birthday = birthday;
- }
- //省略get/set方法
- }
UserDao
- @Override
- public List<User> findAll() {
- // String queryString = "from User";
- String queryString = "select new User(id,name,age,birthday) from User";
- return super.find(queryString);
- }
这样查出来的返回的list里面就是User对象了,而不是Object数组了