gpt4 book ai didi

java - 将查询结果映射到 DTO 的最佳方式

转载 作者:行者123 更新时间:2023-11-30 06:41:41 25 4
gpt4 key购买 nike

我想进行复杂查询并将结果映射到 DTO。 DTO 如下:

@Value(staticConstructor = "of")
public class TotalsDto {
LocalDate date;
long totals;
long totalPerCategory;
int categoryId;
String categoryName;
}

我的存储库接口(interface)是从 JpaRepository 扩展而来的。这是抛出 IllegalArgumentException: Not a managed type,因为 TotalsDto 本身不是实体。

存储库是:

@Repository
public interface TotalsRepository extends JpaRepository<TotalsDto, Integer> {

@Query(value = "SELECT ...", nativeQuery = true)
List<TotalsDto> getTotals(params...);
}

查询正在从其他实体获取数据以构建 DTO。有什么方法可以将每一列映射到 DTO?我尝试将它与下面的查询进行映射,但它仍然得到 Not a managed class

SELECT my.package.TotalsDto.of(column1, subqueryResult1, subqueryResult2...)

最佳答案

1) 使TotalsDto成为一个接口(interface)

2) 创建 setter/getter :

public interface TotalsDto{

long getTotals();
int getCategoryId();
...

}

然后 Spring Data Jpa 将自动创建/填充您的结果对象。

有关该主题的更多信息 here

关于java - 将查询结果映射到 DTO 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54805120/

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