int值存储为数据库中的空字符串,尝试将新值设置为旧值会产生“无法将字符串转换为int”的问题

时间:2018-12-08 03:48:39

标签: mysql sql spring-boot spring-jdbc

我有一个表格,允许用户不输入customer_no的值,它是一个整数值。它以我认为是空字符串的形式存储在数据库中吗?

这是列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'类型的属性值转换为所需的'int'类型      属性'customer_no';嵌套的异常是java.lang.NumberFormatException:用于输入      字符串:“”]]   `

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

例如,如果先前输入的customer_no在数据库中为5,并且用户更新数据库中的另一列并且未为此字段输入值,则触发器应使用存储的5的旧值而不是null,但它说“不能将字符串转换为int“

希望有点道理

谢谢

1 个答案:

答案 0 :(得分:0)

将接收表单的类中的字段从int更改为Integer。然后,它应该获得一个空值,我想这就是您想要的。