私は現在ローカルマシン上でホストされているMariaDBを使用しているOSX上でSpring JPA Webアプリケーションを開発しています。 MariaDBでの私のタイムゾーン設定のクエリは以下を示します:Spring JPAでのタイムゾーン調整の問題を回避するにはどうすればよいですか?
MariaDB [testdb]> show variables like '%time_zone%';
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | EST |
| time_zone | SYSTEM |
+------------------+--------+
2 rows in set (0.00 sec)
MariaDB [testdb]>
私は日付を使用する@Queryを持っています。照会される表には、日付として定義されたフィールドがあります。トレースレベルのログを有効にすると、日付が正しく渡されていることがわかりますが、selectステートメントがアセンブルされるまでに1日ずつ調整されています。これにより明らかに誤った結果が返されます。クエリを手動で実行すると、明らかに目的の行が返されません。未調整の日付で手動でクエリを実行すると、適切な行が返されます。トレースで
2016-11-25 12:11:46 TRACE org.hibernate.type.descriptor.sql.BasicBinder:81 - binding parameter [3] as [DATE] - [2016-11-04]
2016-11-25 12:29:00 TRACE org.hibernate.loader.Loader:1934 - Bound [4] parameters total
2016-11-25 12:29:00 TRACE org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl:437 - Registering result set [[email protected]]
2016-11-25 12:29:00 TRACE org.hibernate.loader.Loader:946 - Processing result set
2016-11-25 12:29:00 TRACE org.hibernate.loader.Loader:970 - Done processing result set (0 rows)
2016-11-25 12:29:00 TRACE org.hibernate.loader.Loader:1112 - Total objects hydrated: 0
2016-11-25 12:29:00 TRACE org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl:412 - Releasing statement [[email protected]: select vacationda0_.EMPLOYEE_ID as EMPLOYEE1_3_, vacationda0_.TYPE as TYPE2_3_, vacationda0_.VACATION_DAY as VACATION3_3_ from VACATION_DAY vacationda0_ where (vacationda0_.EMPLOYEE_ID, vacationda0_.TYPE)=('000448719', 'personal') and vacationda0_.VACATION_DAY='2016-11-03']
、私は日付がESTのタイムゾーン用にフォーマットされたときに問題が発生していることがわかります。私は、データベースがアプリケーションと同じTimeZoneを実行している場合は、日付を調整してはならないと思います。明らかに、これは当てはまりません。
誰かがこの問題を解決する方法を提案できますか?
使用し、UTCで時間をシリアライズあります。 – chrylis