Ваш вопрос неоднозначен - в первом абзаце вы хотите сослаться на столбцы по индексу, а во втором - по имени sql. Так как по индексу это легко, я буду считать по имени.
Прежде всего, вы можете использовать метод doWork
, чтобы получить доступ к базовому соединению JDBC и обработать его, как если бы вы использовали чистый JDBC:
session.doWork(new Work() {
public void execute(Connection connection) throws SQLException {
connection.prepareStatement(...
}
});
Или вы можете использовать query.getReturnAliases
, который возвращает String[]
имен столбцов. Для эффективности я бы, вероятно, создал бы Map
псевдонима для индексации, а затем вы могли бы сделать что-то вроде result[map.get("column name")]
.
Но на самом деле, Hibernate довольно легко обрабатывает составные ключи при использовании сопоставлений xml (еще не пробовал с аннотациями). Немного больше впереди и есть несколько проблем со сложными отношениями (в основном, когда имена / диапазоны внешних ключей не совпадают), но как только вы создадите класс id и отобразите его, вы можете придерживаться HQL / Критерии и все преимущества ленивой загрузки, простых соединений, грязной проверки и т. Д.