提问者:小点点

Spring JPA和MySQL存储了不正确的LocalDateTime值


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


共3个答案

匿名用户

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

匿名用户

我认为这个问题与数据库有关,而不是与代码有关的问题。

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

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

使用这个时间戳来设置日期和时间,并且还必须更改实体类属性

private Timestamp publishedAt;

我希望它会奏效!!

匿名用户

尝试使用这些注释

    @CreationTimestamp
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "published_at")
    private Date publishedAt;