首页 > 解决方案 > 以特定格式将 LocalDate 字段写入数据库

问题描述

我在编写Entity包含LocalDatePostgresql 字段的格式时遇到问题"dd-MM-yyyy"

我的实体看起来像这样。

@Entity
public class DataUpload {

  @Id
  @NonNull
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;

  @NonNull
  @Column(nullable = false)
  private final String clinic;

  @NonNull
  @Column(nullable = false)
  @DateTimeFormat(pattern = "dd-MM-yyyy")
  private final LocalDate startDate;

  @NonNull
  @Column(nullable = false)
  @DateTimeFormat(pattern = "dd-MM-yyyy")
  private final LocalDate endDate;

  @NonNull
  @Column(nullable = false)
  private final long numRows;

  @NonNull
  @Column(nullable = false)
  @DateTimeFormat(pattern = "dd-MM-yyyy")
  private final LocalDate dateUploaded;

  @NonNull
  @Column(nullable = false)
  private final boolean processed;

  public DataUpload() {
    clinic = "SuperDuperClinic";
    startDate = LocalDate.of(2017, Month.JULY, 5);
    endDate = LocalDate.of(2018, Month.JULY, 5);
    numRows = 500;
    dateUploaded = LocalDate.now();
    processed = true;
  }
//getters setters
}

@DateTimeFormat由于数据库中填充的列看起来像这样,Annotation 似乎没有任何作用 。日期格式错误

如何将LocalDate对象格式化为特定模式,以便它可以完全按照我的意愿保存在数据库中?

标签: postgresqlspring-bootspring-data-jpa

解决方案


我相信 a@DateTimeFormat不会影响任何 DBMS 的日期表示。根据弹簧文档

@DateTimeFormat 声明字段或方法参数应格式化为日期或时间

因此,这意味着此注释允许您为 Web 输出动态格式化日期值,就像@JsonSerialize来自Jackson框架一样。日期在 DBMS 管理器中的显示仅取决于数据库管理器中的设置,此外,数据库中的任何日期都保留为十进制值,每个数据库管理器仅通过其设置显示它们


推荐阅读