如下方式:需要使用hibernate3.2及以上版本:
@SuppressWarnings("unchecked")
public List queryObjectsBySQL(final String HQLStr,
final Object[] parmaters, final Integer startRow,
final Integer rowCount) throws DaoException {
try {
List list = getHibernateTemplate().executeFind(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createSQLQuery(HQLStr).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
if (startRow != null && startRow.intValue() >= 0
&& rowCount != null
&& rowCount.intValue() >= 0) {
query.setFirstResult(startRow);
query.setMaxResults(rowCount);
}
if (parmaters != null && parmaters.length > 0) {
for (int i = 0; i < parmaters.length; i++) {
if((parmaters[i]) instanceof List){
List tempList = (List) parmaters[i];
query.setParameterList("typeids", tempList);
}else{
query.setParameter(i, parmaters[i]);
}
}
}
List list = query.list();
return list;
}
});
return list;
} catch (Exception e) {
throw new DaoException(DaoExceptionType.TYPE_CODE_DAO, e);
}
}
注意:
Query query = session.createSQLQuery(HQLStr); List list= query.list(); 返回的是object的数组,内容只包含值,不包含名称,
Query query = session.createSQLQuery(HQLStr).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); List list = query.list(); 返回的是map类型的集合,包含键值对,既有名称又有值。
搜藏:http://www.blogjava.net/rain1102/archive/2009/02/23/256344.html 把查询结果转为对象或者map