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

Spring Data JPA只读查询报错:Invalid value for getInt() - 'BO'

问题排查方案

从堆栈信息里的Invalid value for getInt() - 'BO'可以直接定位核心问题:JDBC尝试将数据库中的字符串值'BO'转换为Java的int类型时失败,这和查询是只读操作没有关系,本质是实体类与数据库字段的类型映射不匹配。

具体排查方向

  • 检查Org实体类的字段映射
    • 重点看oldOrgId字段:如果数据库中该字段是VARCHAR/CHAR类型,但Java实体里定义成了Long或int,当数据库中存在'BO'这类非数字值时,查询就会触发类型转换错误。
    • 检查STATUS枚举的映射配置:如果你的枚举使用了@Enumerated(EnumType.ORDINAL)注解,但数据库中status列存的是枚举的字符串值(比如'BO'),Hibernate会试图把字符串转成枚举的序号(int类型),直接导致报错。这种情况要把注解改成@Enumerated(EnumType.STRING)。
  • 核对数据库表的实际数据
    直接执行SQL查询对应的表(比如SELECT oldOrgId, status FROM org_table WHERE ...),确认oldOrgId或status列中是否存在'BO'这个值,同时核对这两个字段的数据库类型是否和Java实体定义一致。

快速验证方法

可以先写一个原生SQL查询测试:

@Query(value = "SELECT * FROM org WHERE old_org_id = ?1 AND status = ?2", nativeQuery = true)
Org findByOldOrgIdAndStatusNative(String orgId, String status);

如果这个查询能正常返回结果,就说明是实体类的类型映射和数据库实际类型不匹配导致的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:01:08