Spring - JPA - insert - 没有为默认抛出错误的字段传递值

时间:2012-09-17 04:10:58

标签: java spring jpa spring-data-jpa

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

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

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

2 个答案:

答案 0 :(得分:4)

如果要为数据库分配默认值。你不应该把它作为NULL插入,而不是把它留下来,不要插入它,你可以使用@Column(insertable = false) 注释。

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

答案 1 :(得分:3)

您可以尝试为insertable配置@Column属性,该属性不应保留为&从插入语句中排除它。

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