gpt4 book ai didi

java - 当要获取的字段作为 spring data jpa 中的请求的一部分出现时,我们如何以所需的格式获取 ResultSet?

转载 作者:行者123 更新时间:2023-12-02 03:46:36 26 4
gpt4 key购买 nike

我有一个大约有 20 列的实体。在任何时候,我都不想获取所有列,而只想获取所选列,并且我不知道这些列可能是什么,因为它作为参数来自请求。实现这一目标的正确方法是什么?

我尝试使用 native 查询来实现此目的,但很难将结果集解析为所需的响应格式。

Query query = entityManager.createNativeQuery("SELECT name, model, desc FROM Product");
query.getResultList();

现在这个结果集非常通用,我无法通过将 Product.class 作为参数传递给查询来将其转换为所需的产品模型,因为它只获取 3 个字段,其余字段都丢失了。而且我无法拥有预定义的投影,因为它作为参数来自 API 请求。

最佳答案

这就是我的做法。显然,您可以将 ResultSet 作为元组列表获取。我只需迭代此列表并为结果集中的每个条目创建一个映射,以便我可以使用 ModelMapper 映射它。这里的标签是要读取的列的列表。

    Query query = entityManager.createNativeQuery(preparedQuery,Tuple.class);
List<Tuple> resultList = query.getResultList();
List<Product> resultDto = new ArrayList<>();
for (Tuple tuple : resultList) {
HashMap<String, Object> data = new HashMap<>();
for (String tag : tags) {
data.put(tag, tuple.get(tag));
}
resultDto.add(mapper.map(data, Product.class));
}
return resultDto;

感谢所有对此做出回应的人。

关于java - 当要获取的字段作为 spring data jpa 中的请求的一部分出现时,我们如何以所需的格式获取 ResultSet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56803352/

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