微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决Spring JPA 和 MySQL 存储不正确的 LocalDateTime 值

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

解决方法

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

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

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

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

private Timestamp publishedAt;

我希望它会奏效!!

,

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

,

尝试使用这些注释

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。