私は、タイムゾーンの異なる端末からアクセスできるWebポータルからクロックの入出力機能を使用しています。Spring JDBC Persist ZonedDateTime
私はZonedDateTimeを使用して、特定のパンチイン/アウトレコードの日時の計算を処理しています。
// Get store timezone
ZoneId storeTimeZone = this.storeService.getStoreZoneId(storeNum);
// Get current store time to use for punch in/out timestamp
ZonedDateTime currentStoreTime = ZonedDateTime.ofInstant(Instant.now(), storeTimeZone);
データをOracle 11gに保存すると、ZonedDateTimeオブジェクトを永続化できません。 JDBCドライバでサポートされていない可能性があります。その企業環境では、データベースとドライバは変更されません。
NamedParameterJdbcTemplateに渡すMapSqlParamSourceをビルドするときに、java.sql.Timestampに変換する必要がありますが、ゾーンデータを失い、サーバーが存在するタイムゾーンのタイムスタンプを保存すると、要件が規定されますOracle TIMESTAMP列であるデータベースに格納する必要があります。
params.addValue("clockInTimestamp", Timestamp.from(prevRecord.getTimeEntryTimestamp().toInstant()), Types.TIMESTAMP);
この永続ZonedDateTimeを達成する方法はありますか?
Spring、JDBCなどの詳細を忘れると、インスタント+タイムゾーンをインスタントのみを格納できるフィールドに保存しようとしているように思えます。それで、 "I 4バイトのフィールドに32バイトのデータを格納したい "とします。どのような情報をどのように保存したいのか、そしてどのようにして情報を達成するのかを考えることをお勧めします。 –