안녕하세요, 제가 달성하려는 것은 SQL 네이티브 쿼리 결과 맵을 Java spring jpa 리포지토리의 DTO로 가져오는 것입니다. 이 작업을 제대로 수행하려면 어떻게 해야 합니까? 여러 코드를 시도했지만 작동하지 않습니다. 시도한 내용은 다음과 같습니다.
첫 시도 :
@Repository
public interface StockRepository extends RevisionRepository<Stock, Long, Integer>, JpaRepository<Stock, Long> {
@Query(value = "SELECT stock_akhir.product_id AS productId, stock_akhir.product_code AS productCode, SUM(stock_akhir.qty) as stockAkhir "
+ "FROM book_stock stock_akhir "
+ "where warehouse_code = (:warehouseCode) "
+ "AND product_code IN (:productCodes) "
+ "GROUP BY product_id, product_code, warehouse_id, warehouse_code", nativeQuery = true)
List<StockAkhirDto> findStockAkhirPerProductIn(@Param("warehouseCode") String warehouseCode, @Param("productCodes") Set<String> productCode);
}
함수를 실행하면 다음 오류가 발생합니다.
[org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap] 유형에서 [com.b2bwarehouse.Dto.RequestDto.StockDto.StockAkhirDto] 유형으로 변환할 수 있는 변환기를 찾을 수 없습니다.
두 번째 시도:
@Repository
public interface StockRepository extends RevisionRepository<Stock, Long, Integer>, JpaRepository<Stock, Long> {
@Query(value = "SELECT new com.b2bwarehouse.Dto.RequestDto.StockDto.StockAkhirDto(stock_akhir.product_id AS productId, stock_akhir.product_code AS productCode, SUM(stock_akhir.qty) as stockAkhir) "
+ "FROM book_stock stock_akhir "
+ "where warehouse_code = (:warehouseCode) "
+ "AND product_code IN (:productCodes) "
+ "GROUP BY product_id, product_code, warehouse_id, warehouse_code", nativeQuery = true)
List<StockAkhirDto> findStockAkhirPerProductIn(@Param("warehouseCode") String warehouseCode, @Param("productCodes") Set<String> productCode);
}
두 번째로 여기에 오류가 있습니다.
ResultSet을 추출할 수 없습니다. SQL [해당 사항 없음]; 중첩 예외는 org.hibernate.exception.SQLGrammarException입니다: ResultSet을 추출할 수 없습니다
아래는 내 DTO입니다.
@Data
@AllArgsConstructor
@NoArgsConstructor
public class StockAkhirDto {
private Long productId;
private String productCode;
private Integer stockAkhir;
}
코드를 수정하려면 어떻게 해야 합니까? 결과를 내 DTO에 가져올 수 있습니까?