簡體   English   中英

Jooq 3.9沒有將MySQL列鏈接到枚舉

[英]Jooq 3.9 doesn't link MySQL columns to enums

我正在將jooq從版本3.4.1更新到3.9.3,並注意到在MySQL 5.6數據庫中具有enum字段的表的模型是使用String類型生成的。

對應於該字段的枚舉是正確生成的,它只是沒有鏈接到與該表對應的pojo。

CREATE TABLE foo (
  bar ENUM('BarBar') NOT NULL
}

這是為表Foo生成Pojo的示例:

@Generated(
    value = {
        "http://www.jooq.org",
        "jOOQ version:3.9.0"
    },
    comments = "This class is generated by jOOQ"
)
public class Foo {
    private String bar;
}

鏈接到表pojo的枚舉,雖然在其名稱中包含表的Foo前綴:

@Generated(
    value = {
        "http://www.jooq.org",
        "jOOQ version:3.9.0"
    },
    comments = "This class is generated by jOOQ"
)
public enum FooBar implements EnumType {

    BarBar("BarBar");

    private final String literal;

    // ...
}

我沒有改變任何配置,只是jooq版本。 我想知道這是一個錯誤,還是很可能是我身邊缺少一些配置。

此更改是在版本3.8.83.9.0之間引入的,但我無法從發行說明中縮小范圍。

有一個問題對應於此但它不應該上線,所以它可能是我過時的配置。

有兩種原因可能導致這種情況發生:

jOOQ中與<outputSchemaToDefault/>相關的錯誤

這看起來像錯誤

  • #6367 - 當<outputSchemaToDefault/>為true時,PostgreSQL枚舉無法從生成的表中正確鏈接
  • #6395 - 當<outputSchemaToDefault/>設置為true時,Definition.getQualifiedName()錯誤

這將在jOOQ 3.10.0,3.9.4,3.8.8中修復。 該問題與將<outputSchemaToDefault/>標志設置為true有關。

您將使用您的配置排除枚舉類型

<includes/><excludes/>配置必須確保包含枚舉類型作為代碼生成輸出。 枚舉類型是一種合成類型,其行為類似於PostgreSQL枚舉類型。 它的合成名稱來自: [TABLE_NAME]_[COLUMN_NAME]

注意:在你的情況下,我假設這是正確完成的,因為你自己獲得了枚舉類型。 我在這里添加這個是為了完整性,以防其他人有類似的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM