我正在使用 Spring-orm 和 HibernateTemplate 来执行原生 SQL 查询(DB 是 Oracle 11 供参考),如下所示:
@Override
public List<Object> executeNativeQuery(final String queryStr, final Map<String, String> params) {
List<Object> results = this.template.execute(new HibernateCallback<List<Object>>() {
@Override
public List<Object> doInHibernate(Session session) throws HibernateException, SQLException {
// Get the query
Query query = session.createSQLQuery(queryStr);
// Assign parameters to the query, if any
if (params != null) {
for (Map.Entry<String, String> entry : params.entrySet()) {
query.setString(entry.getKey(), entry.getValue());
}
}
// fire the query
@SuppressWarnings("unchecked")
List<Object> res = query.list();
return res;
}
});
return results;
}
我已经成功地执行了查询并取回了结果。但是我想不出一种方法来获取结果列名,我开始认为使用这种方法是不可能的。我的问题是我必须执行来自用户输入的查询,而我对参数名称一无所知。
有任何想法吗?