我有一个通过rest控制器返回数据的通用服务—下面是 Repository
:
public List<Map<String, Object>> read(@NonNull final Table<?> table,
@NonNull final Collection<Field<?>> fields,
@NonNull final Collection<Condition> conditions,
@NonNull final Integer offset,
@NonNull final Integer limit,
final SortField<?> sortField) {
return dslContext
.select(fields)
.from(table)
.where(conditions)
.orderBy(sortField)
.offset(offset)
.limit(limit)
.fetchMaps();
}
他回来了 List<Map<String, Object>>
包含mysql数据库中的数据。问题在于 datetime
字段-在db中,我们不存储时区,但返回 Object
属于类型 Timestamp
下面有 GregorianCalendar
给出 2018-07-05T00:00:00.000+0200
价值 2018-07-05 00:00:00.000
单位:db。它可能会添加默认时区(gmt+2)。
有没有办法简单地告诉jooq转换 datetime
以及 date
从db到 LocalDateTime
以及 LocalDate
而不是 Timestamp
以及 Date
?我知道它在底层使用jdbc,问题可能就在那里,但也许有一种聪明的方法可以解决这个问题。
我可以在额外的Map器中做一些instanceof检查,但是我想避免它,因为这会使代码更加困难,instanceof检查非常难看。
编辑:使用jooq3.9.5和java8。
暂无答案!
目前还没有任何答案,快来回答吧!