我想讓我們的JOOQ記錄更安全。例如,我希望BIGINT
字段CUSTOMER.ID
和ORDER.CUSTOMER_ID
的類型爲CustomerNo
而不僅僅是Long
。如何擴展JOOQ代碼生成器?
我可以強制JOOQ的代碼生成器生成使用customType
forcedType
組合正確的字段:
public final TableField<CustomerRecord, CustomerNo> ID =
createField("ID", SQLDataType.BIGINT.asConvertedDataType(new CustomerNoConverter()), this);
public final TableField<OrderRecord, CustomerNo> CUSTOMER_ID =
createField("CUSTOMER_ID", SQLDataType.BIGINT.asConvertedDataType(new CustomerNoConverter()), this);
但是,這還不夠。對於類型爲Long
的每個單字段主鍵,我需要創建兩個類,即相當於CustomerNo
和CustomerNoConverter
。當然,最簡單的方法是使用JOOQ元模型來遍歷任何這樣的字段併爲它們中的每一個生成代碼。
由於JOOQ模型本身依賴於待生成的類,因此我需要掛鉤到JOOQ的代碼生成器中。但是,我無法找到適合此任務的回調機制。我怎麼能解決這個問題?
是的,這就是我已經計算出來的部分:)我的問題是關於自動創建「
嗯,這是一個正則表達式。你可以匹配任何東西。像'。*?\。CUSTOMER_ID'。如果您提供了關於您的架構的更多信息,我可以提供更多幫助:) –
我誤解了您,它似乎出現了。您顯然需要500種不同類型的安全主鍵類型。您可以始終擴展jOOQ的'JavaGenerator'併爲其添加一些額外的類。例如,有一個[「自定義代碼部分」](http://www.jooq.org/doc/latest/manual/code-generation/codegen-custom-code/)部分,您可以在其中放置自己的代碼。例如,包括您的自定義嵌套類。然後,而不是使用XML配置,使用[編程配置](http://www.jooq.org/doc/latest/manual/code-generation/codegen-programmatic/)生成所有customTypes/forcedTypes –
相關問題