首页 > 解决方案 > Int 值在数据库中存储为空字符串,尝试将新值设置为旧值会产生“无法将字符串转换为 int”问题

问题描述

我有一个表单,它允许用户不输入 customer_no 的值,它是一个 int 值。我认为它作为空字符串存储在数据库中?

这是专栏 customer_no INT(11) NULL,

为什么会这样存储?我正在尝试创建一个触发器,用于当值为 null 或 '' 时使用存储的旧值。但是它有无法将字符串转换为int的错误。有什么帮助吗?这是触发器主体

 IF NEW.customer_no IS NULL OR NEW.customer_no= '' 
 THEN SET NEW.customer_no= OLD.customer_no;
 END IF;

[字段'customer_no'上的对象'form'中的字段错误:拒绝值[];代码 [typeMismatch.form.customer_no ,typeMismatch.customer_no ,typeMismatch.int,typeMismatch]; 参数[org.springframework.context.support.DefaultMessageSourceResolvable:代码[form.customer_no,customer_no];论据 []; 默认消息 [customer_no]];默认消息 [无法将类型“java.lang.String”的属性值转换为属性“customer_no”所需的类型“int”;嵌套异常是 java.lang.NumberFormatException: For input string: ""]] `

我正在使用 springboot 和 jdbc 查询从表单中获取信息并更新数据库,但是当值为空(而不是整数值)时,它会显示此错误。我希望用户可以选择不为此字段输入值,如果他们想更新其他字段,并且仍然保留之前为这个特定字段输入的旧值。

例如,如果先前输入的 customer_no 在数据库中为 5,并且用户更新了数据库中的另一列并且没有为此字段输入值,则触发器应使用存储的旧值 5 而不是 null,但它显示“无法将字符串转换为诠释”

希望这有点道理

谢谢

标签: mysqlsqlspring-bootspring-jdbc

解决方案


将接收表单的类中的字段从 int 更改为 Integer。然后它应该得到一个空值,我认为这就是你所追求的。


推荐阅读