猿问

未使用 JPA 检索到的日期字段

我在 mysql 数据库中有名为 course 的表,该表具有以下列:

  • 项目清单

  • id - int 主键自动递增

  • 名称 - varchar(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> {

}


我创建了一个新的 Course 实体(通过上面接受名称的构造函数):


courseRepository.save(new Course("Algebra"));

并将其保存到表中,似乎 id 列是自动递增的,但日期列为空,即使它现在定义为默认值。


慕妹3242003
浏览 130回答 3
3回答

四季花海

您start_date是一个时间戳,但您正在Date模型中使用。改变@Column(name = "start_date")@Temporal(TemporalType.DATE)private Date startDate;到@Column(name = "start_date", nullable = false, updatable = false)@CreationTimestampprivate Timestamp startDate; //import java.sql.Timestamp;

忽然笑

0发生这种情况是因为您从未设置startDate. 更改您的Course类构造函数,如下所示:public Course(String name, Date startDate) {&nbsp; &nbsp; this.name = name;&nbsp; &nbsp; this.startDate = startDate;}并调用save()如下:courseRepository.save(new Course("Algebra", new Date()));save 方法获取系统的当前日期并将其保存到数据库中。

拉丁的传说

请参考下面的例子@Column(name = "created_date")@Temporal(TemporalType.TIMESTAMP)@DateTimeFormat(pattern = "dd/MM/YYYY")private Date createdDate;
随时随地看视频慕课网APP

相关分类

Java
我要回答