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_expected
和all_costs_invoiced
列中使用了TINYINT 数据类型
所以当我插入一个新容器时问题就来了。我的目标是插入一个新容器,equal_as_expected
和 all_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
表中的NULL
s为0。
然后使用第二个ALTER TABLE
在表中添加NOT NULL
约束
【讨论】:
感谢您的回复,但是如何更改插入语句使其不插入值?现在,在使用 CRUD 保存它们之前,我不会对这些值使用 set 方法。 不知道hibernate是怎么做到的。任何答案here 对吗? 我会尝试这些选项,如果可行,我会通知您。以上是关于MYSQL 和 Hibernate:插入默认值 0 而不是“null”的主要内容,如果未能解决你的问题,请参考以下文章
JPA/Hibernate:如何为 @ManyToOne 插入默认值,其中值表示空条目
mysql中timestamp类型 我设置了默认值 为啥java中添加时间类型还是null 在数据库中可以