Я искал точно такую же вещь и ничего не мог найти в JPA.
Ух, 6 месяцев и не отвечаю:)
Не знаю, помогает это или нет, но я нашел обходной путь:
Галочка в том, что вы не можете привести непосредственно к SQLQuery, вы должны привести к HibernateQuery, затем вызвать getHibernateQuery, а затем привести результат к SQLQuery.
А теперь для некоторого (scala) кода:
val sql = "select distinct story as story from ...";
val q: Query = getEntityManager().createNativeQuery(sql);
//hello nasty hack
q.asInstanceOf[HibernateQuery].getHibernateQuery().asInstanceOf[SQLQuery].addScalar("story", StandardBasicTypes.LONG);
//next, caching
q.setHint("org.hibernate.cacheable", true);
q.setHint("org.hibernate.cacheRegion", "query.getTopLinks");
некрасиво, но это делает работу:)