为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕妹3242003 2021-11-11 14:19:48
我在 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 列是自动递增的,但日期列为空,即使它现在定义为默认值。
查看完整描述

3 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

您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;


查看完整回答
反对 回复 2021-11-11
?
忽然笑

TA贡献1806条经验 获得超5个赞

0


发生这种情况是因为您从未设置startDate. 更改您的Course类构造函数,如下所示:


public Course(String name, Date startDate) {

    this.name = name;

    this.startDate = startDate;

}

并调用save()如下:


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

save 方法获取系统的当前日期并将其保存到数据库中。


查看完整回答
反对 回复 2021-11-11
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

请参考下面的例子


@Column(name = "created_date")

@Temporal(TemporalType.TIMESTAMP)

@DateTimeFormat(pattern = "dd/MM/YYYY")

private Date createdDate;


查看完整回答
反对 回复 2021-11-11
  • 3 回答
  • 0 关注
  • 129 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信