我在mysql数据库中有一个表,该表称为带有以下列的课程:
我定义了以下实体:
@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> {
}
我创建了一个新的Course实体(通过上面接受名称的构造函数):
courseRepository.save(new Course("Algebra"));
并将其保存到表中,即使id列现在已默认设置,但id列似乎是自动递增的,而date列却为null。
答案 0 :(得分:1)
您的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;
答案 1 :(得分:0)
请参考以下示例
@Column(name = "created_date")
@Temporal(TemporalType.TIMESTAMP)
@DateTimeFormat(pattern = "dd/MM/YYYY")
private Date createdDate;
答案 2 :(得分:0)
之所以发生这种情况,是因为您从未设置startDate
。更改您的Course
类构造函数,如下所示:
public Course(String name, Date startDate) {
this.name = name;
this.startDate = startDate;
}
并按如下所示致电save()
:
courseRepository.save(new Course("Algebra", new Date()));
save方法获取系统的当前日期,并将其保存到数据库中。