异常: Can not set java.lang.Double field org.hlx.my2.pojo.Book.price

一、异常:

说明:程序试图将一个 java.math.BigDecimal 类型的值,赋值给一个 java.lang.Double 类型的字段,但是 Java 不允许这种直接转换。

二、原因:

  1. 数据库层面 :你的建表语句中 price 字段定义为 decimal(10, 2)。当 JDBC 驱动从数据库读取这个字段时,为了保持精度,它会自动将其映射为 Java 中的 java.math.BigDecimal 类型。
  2. 实体类层面 :你的 Java 实体类 org.hlx.my2.pojo.Book 中,price 属性被定义为了 Double(基本类型 double 的包装类)。
  3. 冲突发生 :在 BaseDao.java 的第 111 行(通常是在使用反射 field.set(obj, value) 进行结果集映射时),程序拿到了数据库的 BigDecimal 对象,试图强行塞进实体类的 Double 属性中,导致报错。

三、解决

修改实体类

将实体类 Book.java 中的 price 字段类型从 Double 改为 BigDecimal。这是处理金额最规范的做法,可以避免浮点数计算丢失精度的问题。

java 复制代码
mport java.math.BigDecimal;

public class Book {
    // ...
    private BigDecimal price;
    
    // Getter 和 Setter 也要相应修改
    public BigDecimal getPrice() {
        return price;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }
    // ...
}
相关推荐
Java成神之路-1 小时前
Java String 为什么不可变?和 HashMap 到底有什么关系?
java
hiahiahia1231 小时前
Streaming Model Output
开发语言·前端
paopaokaka_luck1 小时前
基于springboot+vue的益暖微光公益服务平台(DeepSeek公益助手、善款信息追溯、志愿服务积分闭环、ECharts运营分析、活动状态自动流转)
java·前端·javascript·spring boot·mysql·架构·echarts
文丑颜不良啊1 小时前
LeetCode1401~1420题目解析
java·leetcode
Nuanyt1 小时前
LeetCode Hot 100 链表专题2 3 题 (Java)
java·笔记·算法·leetcode·链表
文丑颜不良啊2 小时前
LeetCode1341~1360题目解析
java·leetcode
熊猫钓鱼>_>2 小时前
鸿蒙PC高分屏与键鼠交互适配:DPI缩放、右键菜单一次讲清
开发语言·笔记·华为·ai编程·harmonyos·鸿蒙·鸿蒙心迹
QianhangQianping2 小时前
撤销重做不是「存快照」:一个可视化编辑器的Operation 设计
java·前端·数据库·typescript·编辑器·前端架构·撤销重做
海绵宝宝转agent2 小时前
LeetCodehot100题解
java·笔记·学习·算法·leetcode·深度优先
SunnyDays10112 小时前
Java 操作 Word 脚注和尾注:添加、读取与删除
java·word