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数组了
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。