我无法通过与流的映射将List方法返回的getResultList()转换为List<SeedCalendarResultDTO>。当我收集结果时,collect方法应该会返回一个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();

最佳答案

您可以使用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,因为您不需要执行未经检查的转换。

关于java - 我如何将无类型列表从一个entitymanager查询转换为一个类型列表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52384413/

10-11 22:28
查看更多