4

表中的一些不可为空的字段具有默认值。通过 JPA 将新行插入表中时,我不想为这些字段传递任何值,以便它们获得默认值。但是,当通过 Spring JPA 存储库类插入新行时,出现无法插入空值的错误。我注意到 JPA 发送到数据库的插入语句列出了所有字段:

insert into table (field1, field2, field3) values ('abc',null,null);

由于 field2 和 field3 指定了 null,因此未分配默认值,并且数据库抛出无法插入 null 值的错误。有解决方法吗?

4

2 回答 2

4

如果要为数据库分配默认值。您不应该将它作为 NULL 插入,而是必须将其排除在外,并且不要插入它,这样做您可以使用@Column(insertable = false) 注释。

事实上,我认为当您使用 ORM 进行收集时,在数据库中分配默认值并不是一件好事。选择其他方式(例如JPA 事件)来启动 JAVA 中的所有值。

于 2012-09-17T05:20:52.517 回答
4

您可以尝试配置不应insertable保留的属性并将其从插入语句中排除。@Column

从文档 -insertable : (Optional) Whether the column is included in SQL INSERT statements generated by the persistence provider.

于 2012-09-17T05:10:36.070 回答