Я работаю над устаревшей базой данных, в которой изменение схемы таблицы невозможно.Большинство записей уникальны, но есть несколько повторяющихся записей.По этой причине я изменил интерфейс RecordRepository.java
для выполнения @Query
с map ().В противном случае JPA вернет те же данные, если считает, что это та же запись.
RecordRepository.java:
@Query("select new map(field1 as field1, field2 as field2) from Record where year = ?1")
List<Record> findByYear(String year);
RecordController.java:
@RestController
public class RecordController {
@Autowired
private RecordRepository recordRepository;
@RequestMapping(value = "/record/{year}", method = RequestMethod.GET)
public List<Record> recordByYear(@PathVariable("year") String year) {
List<Record> l = recordRepository.findByYear(year);
System.out.println(l.getClass());
System.out.println(l.get(1967));
return l;
}
}
Вывод изgetClass()
- это class java.util.ArrayList
.Печать элемента 1967 из ArrayList - {field1=2018-01-15, field2=201801}
.
Но при попытке получить строковое значение field1 с помощью String tmp_r = l.get(1967).getField1()
я получаю ошибку java.util.HashMap cannot be cast to Record
.
Я пробовал различныепредложения от SO.Моя голова кружится, я должен пропустить что-то простое объяснение этому.
С уважением, Клаус