java.lang.NumberFormatException的 JDBC异常

后端开发 2026-07-11

我尝试在DB2中更新一个表,但遇到了NumberFormat异常。这很奇怪,因为在DB2中 status是 varchar(10) 类型,而在Product.java代码中status被声明为String。

ProductRepo.java

@Modifying
@Query("UPDATE Entity e SET e.status = :status")
void updateStatus(@Param("status") String status);

Product.java

@Entity
@Table(name="Product" schema="test")
public class Product{

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;

@Column(name = "STATUS")
private String status;

public void setStatus(String status){
   this.status = status;
}

public String getStatus(){
   return status;
}

错误如下:

org.hibernate.orm.jdbc.error             : Data type mismatch. (class java.lang.NumberFormatException) JDBC exception executing SQL [Data type mismatch. (class java.lang.NumberFormatException)] [UPDATE schema.table e
     SET e.STATUS = ?
]; SQL [schema.table e
     SET e.STATUS = ?
]

运行CDCService.java时的输出

2026-03-24T13:48:01.354-06:00 TRACE 5364 --- [cdcservice] [   scheduling-1] org.hibernate.orm.jdbc.bind              : binding parameter (6:VARCHAR) <- [PROCESSING]
2026-03-24T13:48:01.366-06:00  WARN 5364 --- [cdcservice] [   scheduling-1] org.hibernate.orm.jdbc.error             : HHH000247: ErrorCode: -99999, SQLState: 07006
2026-03-24T13:48:01.366-06:00  WARN 5364 --- [cdcservice] [   scheduling-1] org.hibernate.orm.jdbc.error             : Data type mismatch. (class java.lang.NumberFormatException)
2026-03-24T13:48:01.419-06:00 ERROR 5364 --- [cdcservice] [   scheduling-1] o.s.s.s.TaskUtils$LoggingErrorHandler    : Unexpected error occurred in scheduled task

org.springframework.dao.InvalidDataAccessResourceUsageException: Unable to bind parameter #6 - PROCESSING [Data type mismatch. (class java.lang.NumberFormatException)] [n/a]; SQL [n/a]

解决方案

在你贴出的查询中,我看到的是:

@Query("UPDATE Entity e SET e.status = :status")

正如你所看到的,你正尝试更新 Entity 表,而根据代码它应该是 Product 表。

为什么会遇到数据类型不匹配?

数据库中可能存在一个 Entity 表(这不是你的表,但可能是一个系统表),并且恰好它有一个名为 status 的列,类型为 formatted number,而你正尝试更新该列。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章