を書き込もうとしましたConverter<java.sql.Date, java.time.LocalDate>
が、すべてのタイムゾーン設定で動作させることができません。
アイデア:
- クライアント コードに
LocalDate
20-Aug-2014 などの があり、それを DB に保存する場合、クライアントのタイム ゾーンに関係なく、DB では 20-Aug-2014 として表示されます。 - DB に 20-Aug-2014 の日付が含まれている場合、クライアントのタイム ゾーンに関係なく、クライアントは 20-Aug-2014 の LocalDate を受け取る必要があります。
私のテスト:
@Test public void dateConverter() {
for (int offset = -12; offset <= 12; offset++) {
TimeZone localTz = TimeZone.getTimeZone(ZoneOffset.ofHours(offset));
TimeZone.setDefault(localTz);
LocalDate ld = LocalDate.now();
sql.insertInto(DATE_TEST).set(new DateTestRecord(ld)).execute();
LocalDate savedLd = sql.selectFrom(DATE_TEST).fetchOne(DATE_TEST.DATE_);
assertEquals(savedLd, ld, "offset=" + offset);
sql.delete(DATE_TEST).execute();
}
}
私のコンバーター:
public class DateConverter implements Converter<Date, LocalDate>{
@Override public LocalDate from(Date date) { return date.toLocalDate(); }
@Override public Date to(LocalDate ld) { return Date.valueOf(ld); }
@Override public Class<Date> fromType() { return Date.class; }
@Override public Class<LocalDate> toType() { return LocalDate.class; }
}
さまざまなバリエーションを試しましたが、どれもうまくいきませんでした...