在springboot-hibernate应用程序上设置正确的时区

时间:2018-08-24 17:13:39

标签: postgresql hibernate jdbc kotlin timezone

在其他帖子中,我按照步骤将时区设置为UTC。

我将UTC设置为springboot应用程序中的默认值

@SpringBootApplication
class MyApplication {

    @PostConstruct
    fun setDefaultTimezone() {
        TimeZone.setDefault(TimeZone.getTimeZone("UTC"))
    }
}

然后进入休眠状态

spring.jpa.properties.hibernate.jdbc.time_zone=UTC

但是当我打电话给findAllComputations(见下文)时,我得到了错误的时区。

@Entity
data class ChartRecord(
        @Id val x: String,
        @Column val y: Double,
        @Column val category: String
)

interface EvolutionRepository : Repository<ChartRecord, String> {

    @Query(
            value = """select * from computeStats(:timezone)""",
            nativeQuery = true
    )
    fun findAllComputations(timezone: String): List<ChartRecord>
}

如果我直接从PostgreSQL控制台执行该查询,结果是正确的,所以我想jdbc的时区错误,因为springboot应用程序没有管理任何日期。

为澄清起见,ChartRecord中的x参数用于返回小时,天等。

更新

通过将SET timezone to UTC添加为postgres函数computeStats中的第一条语句,可以计算出正确的结果。

最重要的是,将休眠配置更改为另一个时区没有任何区别,看起来该属性已被忽略。

0 个答案:

没有答案