string是最常见的字段,
@Column(name = “name”)
private String name;
SQL中 name varchar(255)
生成的字段长度为255,即如果不设置长度的话默认的长度就是255个。
@Column(name = “name”,length = 50)
private String name;
name varchar(50)
@Column(name = “name”,columnDefinition=“varchar(11) COMMENT ‘用户姓名’”)
private String name;
name varchar(11) COMMENT ‘用户姓名’
这里不仅指定了长度,还给列了一个注释,便于查看
@Column(name = “name”,columnDefinition=“default ‘12345’”)
private String name;
如果我们制定默认值,这样SQL语句就会报错
create table user (id bigint not null, age integer, birth datetime(6), name default ‘12345’, sex bit, primary key (id)) engine=InnoDB
如果我们制定长度呢
@Column(name = “name”,columnDefinition=“default ‘12345’”,length = 25)
private String name;
运行的DDL语句依然无法创建出表
create table user (id bigint not null, age integer, birth datetime(6), name default ‘12345’, sex bit, primary key (id)) engine=InnoDB
如何给String字段指定默认值呢
所以如果指定columnDefinition这个属性会覆盖原来的列注解的长度,而且在其注解的中必须制定列的类型
* (Optional) The SQL fragment that is used when
* generating the DDL for the column.
* <p> Defaults to the generated SQL to create a
* column of the inferred type.
String columnDefinition() default "";
/**
*(可选)在以下情况下使用的SQL片段:
*正在为列生成DDL。
*默认使用生成的SQL来创建推断类型的列。
*/
@Column(name = “name”,columnDefinition=" varchar(11) default ‘12345’",length = 25)
private String name;
create table user (id bigint not null, age integer, birth datetime(6), name varchar(11) default ‘12345’, sex bit, primary key (id)) engine=InnoDB