尝试创建用户定义对象列表,获取对象列表

时间:2014-01-30 10:36:15

标签: java hibernate

这是我的user.java域类

public class User {

private Integer iduser;
private String user_name;
private String user_activation_key;
private String user_password;
private String user_email;
private Character registered;

public Integer getIduser() {
    return iduser;
}

public void setIduser(Integer iduser) {
    this.iduser = iduser;
}

public String getUser_name() {
    return user_name;
}.....more code

在另一个Test类中,我编写了如下代码。

SQLQuery query = session.createSQLQuery("select * from user");
List<User> availableUsers = new ArrayList<User>();
availableUsers=(List<User>)query.list();

查询是一个SQLQuery(Hibernate实现),用于从DB获取用户列表 但我无法将(query.list)强制转换为List<User> 我得到了阶级演员异常。 availableUser是一个对象列表 我应该遵循哪些步骤。

2 个答案:

答案 0 :(得分:2)

使用HQL

SQLQuery query = session.createQuery("from User"); //note here User is POJO class name
List<User> availableUsers = new ArrayList<User>();
availableUsers=(List<User>)query.list();  

18.1.1. Scalar queries

这些将返回一个对象数组列表(Object[]),其中包含user表中每列的标量值。 Hibernate将使用ResultSetMetadata来推断返回的标量值的实际顺序和类型。

使用addScalar() see more

时使用createSQLQuery方法

答案 1 :(得分:1)

query.list()返回List<Object>。 每个对象实际上都是一个对象数组(Object[]),它有整行。

例如,如果您获得所有Employee结果,则列表如下: -

{ {emp_id,emp_name,other_emp_col} , {emp_id,emp_name,other_emp_col}, {emp_id,emp_name,other_emp_col} ....}

因此,为了检索它们,你必须迭代Object列表并将iterator.next()转换为Object数组,然后构造自己的User对象。

例如: -

List<Object> userList = query.list();

Iterator<Object> itr = userList.iterator();
while(itr.hasNext()){
    Object[] userRow = (Object[]) itr.next();
    User userObj = new User();
    userObj.setName(userRow[0]);

}

要像Aniket所说的那样保存所有这些工作,请使用HQL