У меня проблема при приведении результата запроса гибернации к классу DTO.Моя база данных, код и ошибка здесь: база данных
Я считаю и суммирую все ошибки и достижения и получаю результат в файл jsp Имя таблицы: запись, тип 0 - ошибкатип 1 - достижение
Результат запроса в phpmyadmin
|---------------------------------------------------|
|StaffId | achievement | mistake | total |
| 1111 | 0 | 2 | -2 |
|---------------------------------------------------|
Репозиторий
@Override
public List<RecordFormHomePage> selectt() {
Session session = this.sessionFactory.getCurrentSession();
List<RecordFormHomePage> recordsList = (List<RecordFormHomePage>)session.createSQLQuery(
"select `StaffId`,sum(case when `Type`=1 then 1 else 0 end) as achievement, sum(case when `Type`=0 then 1 else 0 end) as mistake, sum(case when `Type`=1 then 1 else 0 end)-sum(case when `Type`=0 then 1 else 0 end) as total from Records group by `StaffId`\n"
+ "").setResultTransformer(Transformers.aliasToBean(RecordFormHomePage.class)).list();
System.out.println(recordsList.size());
return recordsList;
}
Сервис
@Override
public List<RecordFormHomePage> list() {
List<RecordFormHomePage> list = recordRepository.selectt();
return list;
}
Контроллер
@GetMapping
public String index(Model model) {
model.addAttribute("TopStaff", recordService.list());
return "/homepage/index";
}
DTO
public class RecordFormHomePage implements Serializable{
int staffId;
int achievement;
int mistake;
int total;
Ошибка
Message Request processing failed; nested exception is IllegalArgumentException occurred while calling setter for property [vn.sof302.trunglqph04966.record.form.RecordFormHomePage.achievement (expected type = int)]; target = [RecordFormHomePage [StaffId=111111, Achievement=0, mistake=0, total=0]], property value = [0]