我想让我们的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 –
相关问题