Установка правильного часового пояса в приложении Springboot-Hibernate - PullRequest
0 голосов
/ 24 августа 2018

Из других сообщений я следовал инструкциям, чтобы установить часовой пояс в формате 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 не управляет какими-либо датами.

Для пояснения, аргумент x в ChartRecord используется для возврата часа, дня и т. Д.

ОБНОВЛЕНИЕ

Добавляя SET timezone to UTC в качестве первого оператора внутри функции postgres computeStats, он вычисляет правильный результат.

Кроме того, изменение конфигурации спящего режима на другой часовой пояс не имеет никакого значения, похоже, что это свойство игнорируется.

...