You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot+Hibernate操作Nft实体时sell_status列Data Too Long报错如何解决

错误原因
  • Java实体类中sellStatus的boolean类型与数据库sell_status字段类型不匹配:当前数据库sell_status字段大概率为bit(1)类型,仅支持存储0/1二进制位值,而Hibernate默认会将Java boolean值序列化为字符串格式的'0'/'1'或'true'/'false'写入,字符串长度超出了bit(1)字段的存储限制,因此抛出长度溢出错误。
  • 未给sellStatus字段显式指定Hibernate的映射规则,导致默认序列化规则和数据库字段类型不兼容。
解决方案

根据你的业务场景选择以下任意一种方案即可:

  • 方案1:统一使用tinyint(1)存储布尔值
    首先修改数据库字段类型:

    ALTER TABLE nft MODIFY COLUMN sell_status TINYINT(1) DEFAULT 0 COMMENT '售卖状态 0未售卖 1已售卖';
    

    然后给实体类字段添加列定义注解:

    @Column(columnDefinition = "TINYINT(1)")
    private boolean sellStatus;
    
  • 方案2:适配现有bit(1)类型的数据库字段
    给实体类字段添加Hibernate类型注解,指定布尔类型转换器:

    @Type(type = "org.hibernate.type.BooleanType")
    private boolean sellStatus;
    
  • 方案3:使用字符串存储状态
    若业务后续需要扩展更多状态值,可直接修改字段类型为字符串:
    实体类修改:

    private String sellStatus;
    

    数据库字段调整:

    ALTER TABLE nft MODIFY COLUMN sell_status VARCHAR(10) DEFAULT 'false' COMMENT '售卖状态';
    

内容的提问来源于stack exchange,提问作者Emre Varol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 05:18:02