我们的项目是这样的。
问题描述:
return (List) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
Query query = session.createSQLQuery(queryString);return query.list();
返回是一个List 这种代码在网上能搜到。
query
.list()返回的是一个二维数组。这样取值很麻烦,也不利于sql的修改。理想的是List装map 可以直接取值。
了解了上面的后 我知道了这个
Query query = session.createSQLQuery(queryString).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
这样可以返回List<map>了但是有一个问题
select id as pid,name from person 我现在想在map.get("pid
") 不行。as不可用
最代码到这里
CustomLoader.java文件(hibernate中)
return resultSetMetaData.getColumnName( position );
这里有columnName和originalColumnName hibernate不去读别名之后的name,而是读取之前的。所有有两个办法
一:修改hibernate源码 ,让他去读别名。
二:修改mysqljdbc,让他放出别名。
这两个方法。。。。于是我搜索了关键字:columnName和originalColumnNmae
终于查询到 ? useOldAliasMetadataBehavior=true 在mysql的url后面加这个。就ok了
终于解决了问题。