【发布时间】:2018-05-26 20:47:33
【问题描述】:
java-1.8 jooq-3.10.0 SpringBoot-1.5.7
myCondition = create
.select(...
TABLE_AL.START_DATE.as("table_al_start_date"),
TABLE_BR.START_DATE.as("table_br_start_date")))
.from(MAIN).innerJoin(TABLE_AL).onkey()
.innerJoin(TABLE_BR).onkey()
.where(DSL.trueCondition());
List<MyObject> myObjList = myCondition.fetch().into(MyObject.class)
class MyObject(){
ZonedDateTime tableAlStartDate;
ZonedDateTime tableBrStartDate;
...
}
我的对象有来自多个表的字段,
table_al_start_date 是 java.time.ZonedDateTime ,
timestamp without time zone,nullable 在PostgreSQL,
获取到MyObject 时会抛出 DataType 异常
Caused by: org.jooq.exception.DataTypeException:
Cannot convert from 1511971200000 (class java.lang.Long) to class java.time.ZonedDateTime
at org.jooq.tools.Convert$ConvertAll.fail(Convert.java:1169)
at org.jooq.tools.Convert$ConvertAll.toDate(Convert.java:1121)
at org.jooq.tools.Convert$ConvertAll.from(Convert.java:823)
如果使用
.select(TABLE_A.START_DATE.as("table_a_start_date").cast(ZonedDateTime.class)
会遇见
org.jooq.exception.SQLDialectNotSupportedException: Type class java.time.ZonedDateTime is not supported in dialect null
还尝试添加 setter setTableAlStartDate(Long long),但不起作用。
我在custom-bindings 找到了转换器,创建自定义转换器后应该做什么,应该在哪里
DataType<LocalDate> type = SQLDataType.DATE.asConvertedDataType(new LocalDateConverter());这是?
应该如何处理这个ZonedDateTime 字段?
谢谢。
【问题讨论】: