MYSQL 和 Hibernate:插入默认值 0 而不是“null”

Posted

技术标签:

【中文标题】MYSQL 和 Hibernate:插入默认值 0 而不是“null”【英文标题】:MYSQL and Hibernate: insert with default 0 instead of "null" 【发布时间】:2020-10-12 19:55:49 【问题描述】:

我在表格中插入实体时遇到问题。我在表container 中的equal_as_expectedall_costs_invoiced 列中使用了TINYINT 数据类型

所以当我插入一个新容器时问题就来了。我的目标是插入一个新容器,equal_as_expectedall_costs_invoiced 的 TINYINT 值默认需要为 0(假)。问题是如果我插入一个新容器,这些值都设置为“null”。当我获取所有具有all_costs_invoiced = false 的容器时,这会给我的程序带来更多问题。

你能给我一些关于如何解决这个问题的建议吗?我尝试了多种方法,例如:

ALTER TABLE container CHANGE all_costs_invoiced all_costs_invoiced TINYINT DEFAULT '0';

但它不会改变任何东西,它仍然会以“null”插入。 另外,当我尝试时:

ALTER TABLE container CHANGE all_costs_invoiced all_costs_invoiced TINYINT NOT NULL DEFAULT '0';

我插入了一个新容器,它给了我一个错误,因为all_costs_invoiced 不能为空。

【问题讨论】:

【参考方案1】:
    将您的插入语句更改为不插入值。这样它会选择默认值。 将表格更改为默认值 0。 然后UPDATE表中的NULLs为0。 然后使用第二个ALTER TABLE 在表中添加NOT NULL 约束

【讨论】:

感谢您的回复,但是如何更改插入语句使其不插入值?现在,在使用 CRUD 保存它们之前,我不会对这些值使用 set 方法。 不知道hibernate是怎么做到的。任何答案here 对吗? 我会尝试这些选项,如果可行,我会通知您。

以上是关于MYSQL 和 Hibernate:插入默认值 0 而不是“null”的主要内容,如果未能解决你的问题,请参考以下文章

JPA/Hibernate:如何为 @ManyToOne 插入默认值,其中值表示空条目

mysql中timestamp类型 我设置了默认值 为啥java中添加时间类型还是null 在数据库中可以

hibernate插入实体类数据库默认值不生效的问题

在MYSQL中使用hibernate注解设置默认值

小学生之Hibernate插入数据修改数据使用数据库默认值的实现

如何使用 GWT、HTML 和 JDBC 或 Hibernate 将数据插入 MySQL 数据库?