hibernate查询指定的字段返回的是一个Object数组,如果查的是一个字段的话就返回Object对象,因为无法直接转换成实体类的对象,所以只能一个个去循环了,,现在有一种比较好的办法是在hql中使用select
new 类名(属性1,属性2……) from 实体类,同时在实体类中添加带参的构造方法,参数的个数和顺序与(属性1,属性2……) 保持一致
下面看个示例代码:
User对象
下面看个示例代码:
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);
}
本文介绍了一种在Hibernate中使用HQL查询时的优化方法,通过在查询语句中使用new关键字结合实体类的带参数构造方法来指定返回的字段,从而避免了将所有字段都查询出来的效率损失。
1343

被折叠的 条评论
为什么被折叠?



