java.lang.NumberFormatException的 JDBC异常
我尝试在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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。