首页 > 解决方案 > 防止休眠在插入数据库之前将即时时间转换为本地时间

问题描述

我有一个 Spring Boot 项目,我想使用 JPA 和休眠将带有 Instant 变量的 Java 对象保存到我的 MSSQL DB 中。时间是UTC(因为它是即时的),但似乎休眠将时间转换为本地时间,然后再将其插入我的数据库。

我要保存的值:“2018-11-20T08:34:33.965Z”

数据库中保存的值:“2018-11-20T09:34:33.965”,因为数据库中的本地时间是 UTC+1。

我的实体看起来像这样:

@Entity(name = "MyEntity")
public class MyEntity {

private Instant myTime;
}

我的回购:

@Repository
public interface MyEntityRepo extends CrudRepository<MyEntity, String>{}
dependencies in build.gradle

我的依赖:

compile("org.springframework.boot:spring-boot-starter-data-jpa:1.1.12.RELEASE")
compile('org.hibernate:hibernate-java8:5.0.12.Final') 

我怎样才能让休眠以节省转换它的时间?

如果您需要任何进一步的信息,请告诉我!

标签: hibernatespring-bootjava-8

解决方案


您可以使用以下属性告诉休眠使用 UTC 作为默认时区:

<property name="hibernate.jdbc.time_zone" value="UTC"/>

推荐阅读