1 回答

TA貢獻1943條經驗 獲得超7個贊
所以看起來修復是為JDBC連接設置UTC時區(而不是JVM):
spring.jpa.properties.hibernate.jdbc.time_zone=UTC
它依賴于 use 將值保留在 Java 端,并在 MySQL 和 H2 中具有 DATETIME 類型的字段。Instantcreated_at
縮短的結果 kotlin 代碼為:
@Entity
data class SomeEntity(
val createdAt: Instant = Instant.now() // default created date is current UTC time
)
val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd H:mm:ss")
createdAt = LocalDateTime.parse("2012-11-30 16:13:21", dateTimeFormatter).toInstant(ZoneOffset.UTC)
想法取自“Joop Eggen”的評論,這個和這篇文章。
獎金
我想如果你正在閱讀這篇文章,你可能還需要調試SQL查詢的幫助。
1. 要打印在 H2 上運行的 SQL 查詢,請添加和連接字符串(請參閱此處):TRACE_LEVEL_FILE=2TRACE_LEVEL_SYSTEM_OUT=2
spring.datasource.url=jdbc:h2:mem:dbname;TRACE_LEVEL_FILE=2;TRACE_LEVEL_SYSTEM_OUT=2;
2. 要啟用休眠日志:
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.use_sql_comments=true
spring.jpa.properties.hibernate.format_sql=true
logging.level.org.hibernate.type=TRACE
3. 要在 MySQL 中啟用查詢日志(其中一種方法,請勿在生產數據庫上使用!
SET GLOBAL general_log = 'ON';
SET global log_output = 'table';
select * from mysql.general_log ORDER BY event_time DESC;
添加回答
舉報