栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

jOOQ-支持JSR310

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jOOQ-支持JSR310

jOOQ路线图

直到jOOQ 3.6,JSR-310日期时间类型都没有官方支持,因为jOOQ开源版和商业版仍然支持Java 6。

在jOOQ 3.7中,此更改发生了变化,因为仅在专门构建的商业发行版中支持Java
6,而标准发行版将需要Java8。此更改的相关问题是#4338。

另一个更改涉及一个标志

<javaTimeTypes/>
,该标志告诉源代码生成器生成JSR-310类型,而不是
java.sql.Date
和类似类型。默认情况下,此标志设置为false,因此在解决问题#5714之前,需要将其设置为true

在jOOQ 3.6以下使用JSR-310类型

同时,您可以自己绑定所需的类型,并让代码生成器使用您的自定义

Converter
Binding
。请参阅手册中的相关部分:

  • http://www.jooq.org/doc/latest/manual/sql-building/queryparts/custom-bindings
  • http://www.jooq.org/doc/latest/manual/pre-generation/custom-data-types
  • http://www.jooq.org/doc/latest/manual/pre-generation/custom-data-type-bindings

正确的映射

的JDBC 4.2规范,其JSR-310中的数据类型应该被映射到JDBC数据类型(其具有相同的PostgreSQL的理解相一致)限定。特别是,JDBC规范列出了:

  • 添加了对映射
    java.time.LocalDate
    到JDBC的支持
    DATE
  • 添加了对映射
    java.time.LocalTime
    到JDBC的支持
    TIME
  • 添加了对映射
    java.time.LocalDateTime
    到JDBC的支持
    TIMESTAMP
  • 添加了对映射
    java.time.OffsetTime
    到JDBC的支持
    TIME_WITH_TIMEZONE
  • 添加了对映射
    java.time.OffsetDateTime
    到JDBC的支持
    TIMESTAMP_WITH_TIMEZONE

JDBC的理解似乎并不完全正确,因为很少有数据库真正将时区信息存储为

TIMESTAMP WITH TIMEZONE
数据类型(例如Oracle),另请参见此DBA /
StackExchange答案:https
://dba.stackexchange.com/a/59021/
2512。由于不存储时区,因此映射
java.time.Instant
到您的方法
TIMESTAMPWITH TIME ZONE
更好,因为SQL类型实际上只是UTC时间戳。

话虽如此,

OffsetDateTime
仍然可以映射到
TIMESTAMP WITH TIMEZONE
,但是当时间戳存储在PostgreSQL中时,您将不知道使用了哪个时区。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/431222.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号