0

我正在使用 Spring Data JPA 将日期时间值存储在 MySQL 表列中。但它的表现真的很奇怪。当我创建应该存储的实体时,我有用于创建日期和时间的 LocalDateTime 字段,该字段是通过 LocalDateTime.now() 设置的。当我调试代码并查看运行中的代码时,LocalDateTime 字段被实例化为正确的日期和时间。但是由于某种原因,当实体存储在 MySQL 数据库中时,时间被设置为过去的两个小时。如果时间是下午 4 点,它会在数据库表中设置为下午 2 点。但是,当我再次使用我的 jpa 存储库读取数据库中的值时,它再次被提前 2 小时推送,尽管它以 tho 小时偏移量存储。所以这有点像两个错误就是一个正确......我猜?怎么会这样?这看起来很疯狂,而且……不合逻辑。

4

3 回答 3

0

我认为这个问题与数据库有关,它与您的代码无关。

我有一种不同的方法在我的系统中有效

 Instant instant = Instant.now();
 Timestamp timestamp = Timestamp.from(instant);

使用此时间戳设置日期和时间,您还必须更改实体类属性

private Timestamp publishedAt;

我希望它会工作!

于 2021-07-13T14:18:44.883 回答
0

由于 DB,我早些时候遇到了这个问题,所以最初,我尝试减少时间和分钟,但是,它不起作用。所以我重新加载了应用程序和数据库,然后它工作正常。你可以试试它可能对你有用

于 2021-07-13T04:48:51.453 回答
0

试试这些注释

    @CreationTimestamp
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "published_at")
    private Date publishedAt;
于 2021-07-16T17:42:55.350 回答