I'm using Spring-orm and HibernateTemplate to execute a native SQL query (DB is Oracle 11 for the reference), like this:
@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; } I've managed to successfully execute the query and get the results back. But I couldn't figure out a way to also get the resulting column names, and I'm starting to think that's not possible using this approach. My problem is that I have to execute a query that comes from user input and I have no clues about parameter names.
Any ideas?