【问题标题】:@Temporal - DateFormat - JPA@Temporal - 日期格式 - JPA
【发布时间】:2018-06-16 14:17:03
【问题描述】:

我在我的 Customer 实体中使用下面来映射 Date 字段

@Temporal(TemporalType.DATE)
@Column(name = "birthdate")
@DateTimeFormat(pattern = "dd-MM-yyyy")
private Date birthDate;

BirthDate 仍以yyyy-MM-dd 格式保存。我尝试使用 DateFormat 在字段 birthDate 的 setter 方法中设置,但仍然是相同的响应。

数据库是Mysql,列的类型是Date。 我希望将值设置为dd-MM-yyyy 格式。

【问题讨论】:

  • DateTimeFormat 与 JPA 无关。 @Temporal(TemporalType.DATE) 表示使用 java.sql.Date 存储和读取日期。它在数据库中的存储方式取决于数据库以及数据库列的类型。但是 DATE 类型没有任何格式。用于可视化日期的工具选择如何显示日期。
  • 似乎是 XY 问题。为什么需要这样存储日期?
  • @JBNizet 我只是在想,当我只想要dd-MM-yyyy 并且甚至不想使用Date 函数时,是否真的需要将其存储为日期。我可以简单地使用varchar 类型吗?
  • 不,你真的不想这样。您甚至无法查询按时间排序的列表。更不用说无法查询两个日期之间的行等。使用正确的类型。日期就是日期。不是 varchar。
  • @JBNizet 有道理,所以转换是唯一的选择。

标签: mysql spring jpa date-formatting temporal


【解决方案1】:

据我从以前的项目中了解到,这是 MySQL 中给定的日期格式,不能直接更改。我会将映射中的日期模式设置为与数据库 (YYYY-MM-DD) 中相同的日期模式,并在稍后使用时重新格式化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-21
    • 2012-11-01
    • 2010-11-03
    • 2017-12-17
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多