Мне нужно применить SQL-запрос, подобный этому.Java Hibernate createSQLQuery с помощью addEntity
SELECT
id as id,
c03 as c03,
c34 as c34
FROM
(SELECT
id,
c03,
c34
FROM
students
where
c34 in(
?, ?,?,?
)
order by
id desc) o
group by
c34;
И мой код Java.
private final void retrieveStudents(){
final List result = currentSession()
.createSQLQuery("SELECT id as id,c03 as c03,c34 as c34 FROM (SELECT id,c34,c03 FROM students where c34 in(:filters) order by id desc) o group by c34;")
.setParameterList("filters",Arrays.asList(74,1812))
.list();
result.forEach(this::consumer1);
}
Запрос в порядке. Возвращает массив объектов, которые я могу выполнять, но я хотел бы вернуть объект Student, поэтому я добавляю.
.addEntity(Student.class)
Но ошибка бросок, который говорит
Column 'ACTIVE' not found.
Также я попробовать с .addScalar, но то же самое происходит.
.addScalar("id",org.hibernate.type.IntegerType.INSTANCE)
.addScalar("c03",org.hibernate.type.DateType.INSTANCE)
Какой столбец из Студента, но не на проекции на мой вопрос, как я могу это сделать я просто подумал, что применение каким-либо образом псевдоним будет Hibernate заполнить студенческую организацию.
Все, что я хочу, это объект-ученик с числами id, c03, c34.
Что я делаю неправильно, так возможно?
См. Ниже ответ, но самым простым способом было бы выбрать все столбцы из таблицы учеников (т. Е. Выбрать *). Тогда вы можете получить свою сущность. С точки зрения производительности выбор нескольких дополнительных столбцов редко бывает большим делом. – user2612030