问题描述:希望从数据库中查询一条数据并获取各字段值。但是hibernate自动生成的代码UserDAO.java文件中查询后返回的是一个List类型,我怎么也取不出这里面的字段值。
使用Eclipse导入hibernate并生成的UserDAO.java文件部分代码如下:
public List findByProperty(String propertyName, Object value) {
log.debug("finding Users instance with property: " + propertyName
+ ", value: " + value);
try {
String queryString = "from Users as model where model."
+ propertyName + "= ?";
Query queryObject = getSession().createQuery(queryString);
queryObject.setParameter(0, value);
return queryObject.list();
} catch (RuntimeException re) {
log.error("find by property name failed", re);
throw re;
}
}
public List findByUsername(Object username) {
return findByProperty(USERNAME, username);
}
然后在测试时的代码如下:
UsersDAO user = new UsersDAO();
List li = user.findByUsername("txldat");
Iterator it = li.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
但是打印结果却显示为:cn.edu.whu.xsjz.txl.vo.Users@18041e0
解决办法:将list强制转换成TDept类型,然后再从tDept1 中取值
@Override
public TDept getDeptById(int id) {
String queryString = " from TDept where id =" + id;
List list = this.hibernateTemplate.find(queryString);
TDept tDept = new TDept();
tDept.setId(id);
TDept tDept1 =(TDept)list.get(0);
tDept.setName(tDept1.getName());
tDept.setMemo(tDept1.getMemo());
return tDept;
}