Spring Data JPA 用 JPQL 的SELECT NEW语法直接把查询结果装进 DTO,是避免返回整个实体、减少数据传输的常用手段。但加上LEFT JOIN、GROUP BY之后,启动时报出Missing constructor,很多排查方向都指向注解或语法,真正的病根常常是构造器的参数类型。问题现象仓库接口里写了一段带动态过滤条件的 JPQL:@Query(""" SELECT NEW com.example.dto.CarsResponseDto( c.id, c.brand, c.model, c.year, c.pricePerHour ) FROM CarsEntity c LEFT JOIN c.location loc LEFT JOIN c.bookings b WHERE (:#{#req.brand} IS NULL OR c.brand = :#{#req.brand}) AND (:#{#req.year} IS NULL OR c.year = :#{#req.year}) G
阅读完成 · 觉得有帮助?