相关疑难解决方法(0)

jOOQ - 支持JSR310

jOOQ是否支持JSR310与PostgreSQL结合使用?特别是,我试图使用以下类:

  • java.time.Instant
  • java.time.LocalDate
  • java.time.LocalTime
  • java.time.LocalDateTime

我存储在以下数据类型中(根据http://www.postgresql.org/docs/9.1/static/datatype-datetime.html):

  • java.time.Instant: timestamp with timezone
  • java.time.LocalDate: date
  • java.time.LocalTime: time without timezone
  • java.time.LocalDateTime: timestamp without timezone

这些数据类型是否正确?

是否jOOQ支持转换之间java.sql.Timestamp,java.sql.Date以及java.sql.Time和四大类以上(双向)?

java sql jooq jsr310

15
推荐指数
2
解决办法
3528
查看次数

jooq转换器:从java.sql.Date到java.time.LocalDate

我试过写一个Converter<java.sql.Date, java.time.LocalDate>但我不能让它与所有时区设置一起工作.

想法:

  • 如果客户端代码有一个LocalDate,例如2014年8月20日,并将其保存到数据库,则无论客户端时区是什么,它都应该在数据库中显示为2014年8月20日.
  • 如果数据库包含2014年8月20日的日期,则无论客户端时区是什么,客户端都应收到2014年8月20日的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();
  }
}
Run Code Online (Sandbox Code Playgroud)

我的转换器:

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; …
Run Code Online (Sandbox Code Playgroud)

java sql jdbc jooq java-time

6
推荐指数
1
解决办法
3735
查看次数

标签 统计

java ×2

jooq ×2

sql ×2

java-time ×1

jdbc ×1

jsr310 ×1