gpt4 book ai didi

java - 如何将实体管理器查询中的非类型化列表转换为类型化列表?

转载 作者:行者123 更新时间:2023-12-02 10:48:09 24 4
gpt4 key购买 nike

我无法打开ListgetResultList() 返回方法进入 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com