我想进行一个复杂的查询并将结果映射到DTO中。 DTO如下:
@Value(staticConstructor = "of")
public class TotalsDto {
LocalDate date;
long totals;
long totalPerCategory;
int categoryId;
String categoryName;
}
我的存储库接口从
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
为界面
2)创建吸气剂:
public interface TotalsDto{
long getTotals();
int getCategoryId();
...
}
然后,Spring Data Jpa将自动创建/填充您的结果对象。
有关此主题的更多信息here