尝试向已有数据的表添加新的布尔列时出错

M.D*_*etz 3 java spring jpa

我尝试向实体 Customer 添加一个新属性,该实体已将数据存储在数据库中:

private boolean isArchived;
Run Code Online (Sandbox Code Playgroud)

当我启动 spring 并尝试更新表时,这给了我以下错误:

Error executing DDL "alter table customer add column is_archived boolean not null" via JDBC Statement
Run Code Online (Sandbox Code Playgroud)

这是因为他尝试用 null 初始化isArchived已经存在的行,并且原始类型不能为 null 吗?有没有一种方法可以用 false 来初始化它们,或者我必须使用Boolean而不是boolean允许空值(我不想允许)?

Sha*_*iul 8

这是因为现有行不能有空值,而新的非空列。要做的方法是提供一个默认值。你可以像下面这样做:

@Column(nullable=false, columnDefinition = "BOOLEAN DEFAULT FALSE")
private boolean isArchived;
Run Code Online (Sandbox Code Playgroud)