SpringBoot 3.5 JPA投影

背景

java.lang.ClassCastException: class java.math.BigDecimal cannot be cast to class java.lang.Integer (java.math.BigDecimal and java.lang.Integer are in module java.base of loader 'bootstrap') 报错### 问题分析

当使用JPA投影查询时,若数据库字段类型为DECIMAL/NUMERIC(映射为BigDecimal),但试图强制转换为Integer,会触发ClassCastException。以下是解决方案和示例。


解决方案:修改投影接口字段类型

确保投影接口的返回类型与数据库字段类型匹配:

复制代码
public class ProductDTO {
    private String name;
    private Integer price;

    public ProductDTO(String name, Integer price) {
        this.name = name;
        this.price = price;
    }
    // Getters
}

Repository查询

复制代码
@Query("SELECT (p.name, p.price FROM product p",nativeQuery = true)
List<ProductDTO> findProductDTOs();
相关推荐
晴虹2 小时前
lecen:一个更好的开源可视化系统搭建项目--介绍、搭建、访问与基本配置--全低代码|所见即所得|利用可视化设计器构建你的应用系统-做一个懂你的人
前端·后端·低代码
Vic101012 小时前
Spring AOP 常用注解完全指南
java·后端·spring
Halo_tjn2 小时前
Java IO流实现文件操作知识点
java·开发语言·windows·算法
神奇小汤圆2 小时前
告别繁琐!MapStruct-Plus 让对象映射效率飙升,这波操作太香了!
后端
CryptoRzz2 小时前
StockTV API 对接全攻略(股票、期货、IPO)
java·javascript·git·web3·区块链·github
小菜鸡ps2 小时前
【flowable专栏】网关类型
后端·工作流引擎
王中阳Go2 小时前
字节开源 Eino 框架上手体验:Go 语言终于有能打的 Agent 编排工具了(含 RAG 实战代码)
人工智能·后端·go
零_守墓人2 小时前
Patroni 中备份恢复和数据迁移
后端
用户1565845925052 小时前
Go技术专家进阶营 从代码开发到架构设计,开启Go技术专家之路
后端