jOOQ是否结合PostgreSQL提供对JSR310的支持?特别是,我尝试使用以下类:
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
以及上述四个类之间的转换(双向)?
直到jOOQ 3.6,JSR-310日期时间类型都没有官方支持,因为jOOQ开源版和商业版仍然支持Java 6。
在jOOQ 3.7中,此更改发生了变化,因为仅在专门构建的商业发行版中支持Java
6,而标准发行版将需要Java8。此更改的相关问题是#4338。
另一个更改涉及一个标志<javaTimeTypes/>
,该标志告诉源代码生成器生成JSR-310类型,而不是java.sql.Date
和类似类型。默认情况下,此标志设置为false,因此在解决问题#5714之前,需要将其设置为true
。
同时,您可以自己绑定所需的类型,并让代码生成器使用您的自定义Converter
或Binding
。请参阅手册中的相关部分:
的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 TIME ZONE
数据类型(例如Oracle),另请参见此DBA /
StackExchange答案:https
://dba.stackexchange.com/a/59021/
2512。由于不存储时区,因此映射java.time.Instant
到您的方法TIMESTAMP WITH TIME ZONE
更好,因为SQL类型实际上只是UTC时间戳。
话虽如此,OffsetDateTime
仍然可以映射到TIMESTAMP WITH TIME ZONE
,但是当时间戳存储在PostgreSQL中时,您将不知道使用了哪个时区。
jOOQ是否结合PostgreSQL为JSR310提供支持?特别是,我尝试使用以下类:
我对JOOQ产品与AWS RDS Aurora MySQL的兼容性有点困惑。 也许这纯粹是一项牌照限制,而非技术限制。 本页https://www.jooq.org/legal/licensing#databases在专业版中显示RDS Aurora支持 我的问题是: 有谁能确认这实际上是一个许可证使用条款限制,而不是开源代码的技术限制,例如,当使用专业版时,并不是一个实际会运行不同风格的JOOQ
我知道jOOQ将在不支持它的系统(如PostgreSQL)上模拟SQLMERGE。 我有一个带有串行(自动增量)id列和字符串uri列的表。我想在我的数据库中使用数字ID而不是URI,所以我必须确保在ID查找表中有一个URI。因此,按照jOOQ手册中的示例,我认为这将起作用: 这给了我一个这样的语句: 但是日志说jOOQ继续并尝试用绑定值执行查询。但是该表从未更新。所以我猜jOOQ没有在Postg
我正在评估我们是否可以为我们的项目从普通JDBC迁移到jOOQ。其中大部分看起来很有希望,但我现在想知道一个特定的流:嵌套行。让我解释一下。 假设您有以下两张表: (我们假设一个学生只能是一个班级的一员。) 让我们为这些表创建一个响应类型。我将在下面的查询中使用这些。 现在让我们使用嵌套行获取所有带有学生的类: 一种有用的变体是仅在数组中使用嵌套行: 我想知道jOOQ是否有一种优雅的方法来解析包含
我不能使用jOOQ生成器为MySQL生成类,但在PostgreSQL中是逆的 我在代码生成配置文件中包含了“dual”: 我正在使用jOOQ的最新版本:2.4.0。可能有什么问题?
我遇到了这个问题java.lang.IllegalArgumentException:MySQL只支持单个生成的值。在我所有的insert查询中,不仅仅是这个表。我使用的是jooq 3.15和r2dbc。可能是什么问题 堆栈跟踪 生成的sql对我来说似乎没有问题,我甚至尝试在workbench上成功地插入它 表ddl看起来是这样的,它相当简单