我无法转动List
由 getResultList()
返回方法进入 List<SeedCalendarResultDTO>
通过与流的映射。当我收集结果时,collect 方法应该返回 Object
而不是List<SeedCalendarResultDTO>
我不明白为什么会发生这种情况。在文档中我可以读到 getResultList 返回一个无类型列表而不是一个对象,那么为什么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 - 如何将实体管理器查询中的非类型化列表转换为类型化列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52384413/