jOOQ:是否可以从名称模式给出的某些表生成枚举?

jOOQ: Is it possible to generate enums from certain tables given by a name pattern?

有时需要table像:

CREATE TABLE contact_phone_type (

    -- PRIMARY KEY

    id BIGSERIAL PRIMARY KEY,

    -- ATTRIBUTES

    name VARCHAR(10) NOT NULL UNIQUE
);

INSERT INTO contact_phone_type
    (name)
VALUES
    ('Phone'),
    ('Fax');

有时映射到 enum 类型很烦人,以便以后进行方便且类型安全的映射。由于那些 enum 类型必须手写,所以有时再次输入完全相同的内容有点烦人。尤其烦人的是改变顺序的情况。这意味着相应的电子邮件也必须手动重新排序。

因此我想知道 jOOQs 代码生成器是否可以为我生成这些枚举?

我知道 但我的用例目前还没有那么棘手。

生成器所要做的基本上就是查看 e.h。 table 以 _type 结尾,如果是,则创建一个包含指定元素的枚举,例如按列 name 并将这些生成的文件复制到我告诉它的目录中。

这有可能吗?

这些枚举带来的另一件事是,还必须编写相应的 Converter<>。如果代码生成器识别出 "type-table",那么它可以创建枚举 相应的转换器。


只是一个玩具示例:

private void createDeliveryPhoneNumber(Long shopId, String deliveryPhoneNumber) {
    this.ctx
        .insertInto(SHOP_CONTACT_PHONE)
        .set(SHOP_CONTACT_PHONE.SHOP_ID, shopId)
        .set(SHOP_CONTACT_PHONE.PHONE, deliveryPhoneNumber)
        .set(SHOP_CONTACT_PHONE.CONTACT_PHONE_TYPE_ID, ContactPhoneType.DELIVERY)
        .execute();
}

I am aware of but my use case if by far not that tricky.

除了您的用例感知是主观的这一事实,我不同意 :),这同样不能从 jOOQ 开箱即用作为您链接问题中的用例(出于相同的原因) .

但是,在您的终端自己实现这种代码生成是相当容易的。或者,您可以扩展 jOOQ 代码生成器以生成额外的 类,或者您可以在完全独立的步骤中执行此操作。