我在PostgreSQL数据库中有一个带JPA的映射实体。
表存在,我有一些记录,现在我想添加一个简单的新布尔值(不是 B oolean)属性。
在日志中我可以正确地看到alter table使用not null,因为我选择了boolean而不是Boolean,它可以,但是.... 没有看到任何错误,数据库没有更新。
尝试直接在我的SQL客户端执行alter table我终于可以看到问题了,就是我刚刚添加的列包含空值... 显然,一旦创建该列,已存在的记录将具有空值。
那就是说,如果我想在已经至少有一条记录的表中创建一个非null属性,我该怎么办? 感谢
答案 0 :(得分:0)
根据我对您的问题的理解,当您通过添加新的boolean
列来更新表格时,您的早期添加的表格行会出现问题。
您之前的表行获得了新添加列的null
值。
您可以使用JPA
作为columnDefinition
注释中的属性提供@Column
来设置JPA
实体属性的默认值。
如果您想在@Column(name = "is_active", columnDefinition="tinyint(1) default 1")
private boolean isActive;
实体中添加新的布尔属性,可以试试这个
hbm2ddl
由于您使用的是boolean
,因此不仅会为您创建一个新的true
列,还会为其设置默认值{{1}}。对于该表中之前添加的所有行,它也将设置为true。
希望它有所帮助!