未使用 JPA 检索日期字段



我在 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 方法获取系统的当前日期并将其保存到数据库中。

最新更新