jpa 数据库默认值引发“column cannot be null”错误
在 jpa 中,数据库已设置默认值的情况下,保存实体却抛出“column cannot be null”异常,原因可能如下:
全量操作字段
jpa 默认会对所有字段进行全量操作,即使数据库提供了默认值。这意味着,即使实体中某字段的值为 null,jpa 也会向数据库插入 null 值。
解决方案:@dynamicinsert 注解
为了避免这种情况,可以在实体类中为有默认值的字段添加 @dynamicinsert 注解。此注解指示 jpa 只插入非 null 值的字段,允许数据库使用默认值填充空值字段。
以下是如何使用 @dynamicinsert 注解解决此问题的示例代码:
@Entity @DynamicInsert public class XXX { @Column(name = "`aaa`") private String aaa; }
登录后复制
添加此注解后,jpa 在向数据库插入新实体时,将仅插入非 NULL 的字段值,而 aaa 字段将使用数据库提供的默认值填充。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
【小浪云服务商 - 服务器12元起 - 挂机宝5元起】
THE END
暂无评论内容