2017-04-16 65 views
1

我正在使用jOOQ 3.9.1並嘗試使用UUID字段生成表。如何使用帶UUID字段的jOOQ爲MySQL生成正確的SQL?

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) 

我做錯了什麼?

回答

0

這是jOOQ 3.9.1的已知問題和早期版本: https://github.com/jOOQ/jOOQ/issues/5807

最簡單的解決方法是:

  1. 使用plain SQL此處可用於整個聲明
  2. 使用的ExecuteListener修補生成的SQL輸出
+1

謝謝@LukasEder。看起來ExecuteListener是保持數據庫不可知論的最佳方法--JOOQ的最佳屬性。 此方法允許通過在更改前檢查方言來更改僅用於特定DB的代碼生成。 –