表中的一些非可空字段具有默认值。通过JPA将新行插入表时,我不想为这些字段传递任何值,以便它们获得默认值。但是,当通过Spring JPA存储库类插入新行时,我收到一个错误,即无法插入空值。我注意到JPA发送到数据库的insert语句列出了所有字段:
insert into table (field1, field2, field3) values ('abc',null,null);
由于field2和field3指定了null,因此未分配默认值,并且数据库抛出错误,即无法插入空值。有解决方法吗?
答案 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.