一般在网上都会说通过下面这种方式来生成默认值
@Column(name="abc" ,nullable=false,columnDefinition="INT default 0")
private Integer abc;
但这种方式是编写原生的生成表结构的sql,除了语法要保证正确外,而且类型需要数据库支持才行,并不能自动匹配类型。
其实hibernate提供了专门设置默认值的注解:
@ColumnDefault("0")
private Integer abc;
官方文档demo:
使用Hibernate,您可以使用@ColumnDefault
注释为给定的数据库列指定默认值。
示例. @ColumnDefault
映射示例
@Entity(name = "Person")
@DynamicInsert
public static class Person {
@Id
private Long id;
@ColumnDefault("'N/A'")
private String name;
@ColumnDefault("-1")
private Long clientId;
//Getter and setters omitted for brevity
}
CREATE TABLE Person (
id BIGINT NOT NULL,
clientId BIGINT DEFAULT -1,
name VARCHAR(255) DEFAULT 'N/A',
PRIMARY KEY (id)
)