如何使用 jOOQ 从 PostgreSQL 中的枚举类型生成 Java 枚举

问题描述 投票:0回答:1

我有以下枚举定义:

create type task_status as enum ('ok', 'fail')

表:

create table if not exists task
(
    id      uuid default gen_random_uuid() not null primary key,
    status  task_status,
    ...
);

以及以下代码生成配置:

<generator>
    <name>org.jooq.codegen.JavaGenerator</name>

    <generate>
        <fluentSetters>true</fluentSetters>
        <daos>true</daos>
        <springAnnotations>true</springAnnotations>
        <springDao>true</springDao>
    </generate>

    <database>
        <name>org.jooq.meta.postgres.PostgresDatabase</name>
        <inputSchema>public</inputSchema>
        <includes>task</includes>
        <includeTables>true</includeTables>
        <includeSystemTables>false</includeSystemTables>
        <includeInvisibleColumns>false</includeInvisibleColumns>
        <includeEmbeddables>true</includeEmbeddables>
        <includeRoutines>false</includeRoutines>
        <forcedTypes>
            <forcedType>
                <name>INSTANT</name>
                <includeTypes>timestamptz</includeTypes>
            </forcedType>
        </forcedTypes>
    </database>

    <target>
        ...
    </target>
</generator>

当我运行 codegen 时,我得到:

public class Task implements Serializable {
    
    private Object status;
    ...
}

虽然我没有找到关于 jOOQ 是否确实可以从该列类型生成 Java 枚举类型的直接答案,但它听起来就像它只适用于其他人。我知道我可以实现自定义生成器或使用枚举转换器,但我想知道 Java 枚举是否可以开箱即用地生成,而我只是做错了。我正在使用 jOOQ 2013 年 3 月 17 日。

java postgresql jooq
1个回答
1
投票

您没有在代码生成配置中包含枚举类型:

<includes>task</includes>

请执行此操作:

<includes>task|task_status</includes>
© www.soinside.com 2019 - 2024. All rights reserved.