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();
相关推荐
不吃香菜学java2 小时前
Redis的java客户端
java·开发语言·spring boot·redis·缓存
码事漫谈2 小时前
大模型输出的“隐性结构塌缩”问题及对策
前端·后端
captain3762 小时前
事务___
java·数据库·mysql
北漂Zachary2 小时前
四大编程语言终极对比
android·java·php·laravel
小江的记录本3 小时前
【网络安全】《网络安全常见攻击与防御》(附:《六大攻击核心特性横向对比表》)
java·网络·人工智能·后端·python·安全·web安全
努力的小雨3 小时前
龙虾量化实战法(QClaw)
后端
橙露3 小时前
SpringBoot 整合 MinIO:分布式文件存储上传下载
spring boot·分布式·后端
小眼哥4 小时前
SpringBoot整合Vue代码生成exe运行程序以及windows安装包
vue.js·windows·spring boot
嗑嗑嗑瓜子的猫4 小时前
Java!它值得!
java·开发语言
2401_895521345 小时前
【Spring Security系列】Spring Security 过滤器详解与基于JDBC的认证实现
java·后端·spring