как преобразовать нетипизированный список из запроса управления данными в типизированный список? - PullRequest
0 голосов
/ 18 сентября 2018

Я не могу превратить List, возвращенный методом getResultList(), в List<SeedCalendarResultDTO> посредством сопоставления с потоком.Когда я собираю результат, метод сбора предположительно возвращает Object вместо List<SeedCalendarResultDTO>, и я не понимаю, почему это происходит.В документе я могу прочитать, что getResultList возвращает нетипизированный List, а не объект, так почему же метод collect возвращает объект тогда?Вот соответствующий фрагмент кода:

    Query query = entityManager.createQuery(queryBuilder.toString());
        Object collect = query.getResultList().stream().map(object -> (SeedCalendarResultDTO) object).collect(Collectors.toList());

Я не могу изменить сбор объекта на сбор списка, потому что он создает ошибку компиляции.Я также не хочу использовать NamedQuery, потому что строка запроса создается динамически.

РЕДАКТИРОВАТЬ: По какой-то причине это работает просто отлично, но нежелательно, потому что теперь это все еще список объектов.List<SeedCalendarResultDTO> results = query.getResultList();

1 Ответ

0 голосов
/ 18 сентября 2018

Вы можете использовать TypedQuery, чтобы легко получить напечатанный список.

   TypedQuery<SeedCalendarResultDTO> query = em.createQuery(queryBuilder.toString(), SeedCalendarResultDTO,class);
   List<SeedCalendarResultDTO> results = query.getResultList();

Но ваш код также должен работать:

Query query = entityManager.createQuery(queryBuilder.toString());
List<SeedCalendarResultDTO> results = query.getResultList();

Я бы предпочел TypedQuery, потому что вам не нужно выполнять непроверенное преобразование.

...