如何使用带有 UUID 字段的 jOOQ 为 MySQL 生成正确的 SQL?

How to generate proper SQL for MySQL with jOOQ with UUID fields?

我正在使用 jOOQ 3.9.1 并尝试使用 UUID 字段生成 table。

val sql = dsl.createTable("test").column("id", SQLDataType.UUID).column("val", SQLDataType.UUID.length(36).nullable(false)).getSQL()

预期结果是:

create table `test`(`id` varchar(36) null, `val` varchar(36) not null)

但我得到了:

create table `test`(`id` varchar null, `val` varchar not null)

我做错了什么?

这是 jOOQ 3.9.1 及更早版本中的已知问题: https://github.com/jOOQ/jOOQ/issues/5807

最简单的解决方法是:

  1. 此处对整个语句使用plain SQL
  2. 使用 ExecuteListener 修补生成的 SQL 输出