我在 mysql 数据库中有一个名为 course 的表,其中包含以下列:
- 列表项
- id - 整数主键自动递增
- 名称 - 瓦尔查尔(250(
- start_date - 时间戳默认值现在((
我定义了以下实体:
@Entity
@Table(name = "course")
public class Course {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@Column(name = "start_date")
@Temporal(TemporalType.DATE)
private Date startDate;
protected Course() {
}
public Course(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getId() {
return id;
}
public Date getStartDate() {
return startDate;
}
}
因此,数据库应填充日期列。 我使用 Spring 数据 JPA,所以我的 dao 看起来像这样:
public interface CourseRepository extends CrudRepository<Course, Long> {
}
我创建了一个新的课程实体(通过上述接受名称的构造函数(:
courseRepository.save(new Course("Algebra"));
并将其保存到表中,似乎 id 列是自动递增的,但日期列是空的,即使它现在定义为默认值。
您的start_date
是一个时间戳,但您在模型中使用了Date
。
改变
@Column(name = "start_date")
@Temporal(TemporalType.DATE)
private Date startDate;
自
@Column(name = "start_date", nullable = false, updatable = false)
@CreationTimestamp
private Timestamp startDate; //import java.sql.Timestamp;
请参考下面的示例
@Column(name = "created_date")
@Temporal(TemporalType.TIMESTAMP)
@DateTimeFormat(pattern = "dd/MM/YYYY")
private Date createdDate;
发生这种情况是因为您从未设置startDate
。更改Course
类构造函数,如下所示:
public Course(String name, Date startDate) {
this.name = name;
this.startDate = startDate;
}
并像下面这样调用save()
:
courseRepository.save(new Course("Algebra", new Date()));
save 方法获取系统的当前日期并将其保存到数据库中。