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

时间:2016-02-23 21:48:21

标签: enums jooq

有时需要有以下表格:

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代码生成器是否可以为我生成这些枚举?

我知道this question但我的用例如果到目前为止并不那么棘手。

所有发电机必须做的基本上是看看e.h.该表以_type结尾,如果是,则创建一个枚举,其中包含指定的元素,例如按列name并将生成的文件复制到我告诉它的目录中。

这有可能吗?

这些枚举的另一个问题是,人们还要编写相应的Converter<>。如果代码生成器识别出&#34; type-table&#34;然后它可以创建枚举相应的转换器。

只是一个玩具示例:

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();
}

1 个答案:

答案 0 :(得分:0)

  

我知道this question但我的用例如果到目前为止并不那么棘手。

除了你的用例感知是主观的,我不同意:),这同样不是jOOQ开箱即用的链接问题中的用例(出于同样的原因)。< / p>

然而,在您的最后实现这种代码生成相当容易。或者,您可以扩展jOOQ代码生成器以生成其他类,或者您可以在完全独立的步骤中执行此操作。