问题描述:MySQL数据库建表时对于某个字段设置了默认值,但是使用Spring Data Jpa的save后默认值没有生效。MySQL数据库中构建的用户表表结构如下所示:
DROP TABLE IF EXISTS USER;
CREATE TABLE USER(
`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`name` VARCHAR(25) NOT NULL COMMENT '姓名',
`address` VARCHAR(25) DEFAULT '北京市东城区王府井' COMMENT '住址',
PRIMARY KEY (`id`)
) COMMENT='用户表';
给address字段设置了默认值为“北京市东城区王府井”
解决方法:在实体类的address的Column注解中显式设置 insertable=false
import lombok.Data;
import javax.persistence.*;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
@Entity
@Table(name = "user")
public class User{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
//主键id
private Integer id;
//姓名
@Column(name = "name")
private String name;
//住址
@Column(name = "address",insertable = false)
private String address;
}
insertable属性:表示在使用“INSERT”脚本插入数据时,是否需要插入该字段的值,默认值为true