Ответ 1
Возможно, вы можете использовать трансформатор результатов. Цитирование Hibernate 3.2: Трансформаторы для HQL и SQL:
Преобразователи SQL
С исходным sql возвращающим не-сущностью beans или Карта часто более полезны вместо базового
Object[]
. С трансформаторы результатов, которые сейчас возможно.List resultWithAliasedBean = s.createSQLQuery( "SELECT st.name as studentName, co.description as courseDescription " + "FROM Enrolment e " + "INNER JOIN Student st on e.studentId=st.studentId " + "INNER JOIN Course co on e.courseCode=co.courseCode") .addScalar("studentName") .addScalar("courseDescription") .setResultTransformer( Transformers.aliasToBean(StudentDTO.class)) .list(); StudentDTO dto =(StudentDTO) resultWithAliasedBean.get(0);
Совет: звонки
addScalar()
были требуется для HSQLDB, чтобы он соответствовал имя свойства, так как он возвращает столбец имена во всех прописных буквах (например, "ИМЯ УЧЕНИКА" ). Это также может быть решаются с помощью настраиваемого трансформатора, который поиск имен свойств вместо используя точное совпадение - возможно, мы должны предоставить метод fuzzyAliasToBean();)
Ссылки
- Справочное руководство по Hibernate
- Hibernate Blog