美文网首页
MySQL字段默认值不能填充JavaBean保存时的NULL

MySQL字段默认值不能填充JavaBean保存时的NULL

作者: 猫尾草 | 来源:发表于2019-07-09 17:24 被阅读0次
  1. 问题

我们在数据库建表的是时候,经常有下面类似的语句:

`name` varchar(50) NOT NULL DEFAULT '' COMMENT '视频所属用户',

意思是name这个String类型字段不能为空,但是可以用空字符串填充。
这个默认值并不是万能的。
假如name属于Task这个Javabean,不给name初始化(即name为null),jpa或者hibernate使用

taskDao.saveAndFlush(task);

的时候还是会收到SQLException,Exception内容是column name 不能为null。

2.原因

MySQL只能为缺省的字段使用默认值,传入了字段又为null则不能使用默认值。下面有两条SQL语句。
第一条:

insert into task (id, name) values (1001, null);

这条SQL语句执行就会报错。
第二条:

insert into task (id) values (1001);

这条SQL语句则会执行成功,name为空字符串。

taskDao.saveAndFlush(task);

这种用法就相当于第一条SQL语句。

3. 解决办法

  要想MySQL帮你使用默认值,你就不要传那个字段;但是jpa或者hibernate保存JavaBean时,JavaBean中的属性要么有值,要么为null,不符合MySQl的要求。这时可以使用BeanUtil为JavaBean的null属性填充空字符串、0、当前时间等等符合你要求的默认值。

相关文章

  • Mysql 的严格模式的 作用

    1.0 不为null的字段不能写入null数据。 2.0 text字段没有默认值 3.0 自增长的字段不能自定义值

  • java错题集

    1、数据库字段默认值不能为null,要有默认值空值,插入数据最好对有默认值的字段也塞值(默认值),更新数据时对可能...

  • mysql表设计规范

    1. MySQL建表,字段需设置为非空,需设置字段默认值。 2. Mysql建表,字段尽量不要使用null,需NU...

  • 44-表相关操作

    一、约束条件 not null标识该字段不能为空和default设置默认值没设置默认值时插入空数据会报错:设置默认...

  • mysql null

    mysql创建表时,字段不特别指明不为空,默认为NULL。 如果某个字段允许NULL,插入数据时,没有插入这个字段...

  • 数据库优化

    一.sql语句优化 1.应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认值,但...

  • MySQL核心技术与最佳实践(第4章 表记录更新)

    insert into 表名 [(字段列表)] values (值列表);自增字段可插入null值,默认值约束可以...

  • MySQL优化原理

    说起MySQL的查询优化,相信大家积累一堆技巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段...

  • 我必须得告诉大家的MySQL优化原理

    说起MySQL的查询优化,相信大家积累一堆技巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段...

  • 我必须得告诉大家的MySQL优化原理

    说起MySQL的查询优化,相信大家积累一堆技巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段...

网友评论

      本文标题:MySQL字段默认值不能填充JavaBean保存时的NULL

      本文链接:https://www.haomeiwen.com/subject/esfkkctx.html