[英]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.8和3.9.0之間引入的,但我無法從發行說明中縮小范圍。
有一個問題對應於此但它不應該上線,所以它可能是我過時的配置。
有兩種原因可能導致這種情況發生:
<outputSchemaToDefault/>
相關的錯誤 這看起來像錯誤
<outputSchemaToDefault/>
為true時,PostgreSQL枚舉無法從生成的表中正確鏈接 <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.