如何用jOOQ从PostgreSQL枚举类型生成Java枚举
问题解答
jOOQ 3.17.13支持开箱即用地为PostgreSQL枚举生成对应Java枚举类,你的问题出在代码生成配置的疏漏上。
问题原因
你的<includes>配置仅指定了task表:
<includes>task</includes>
PostgreSQL的枚举类型task_status是独立的数据库对象,不属于task表的范畴,因此jOOQ的元数据扫描过程中未识别到该枚举类型,无法生成对应的Java枚举类,只能将字段类型降级为Object。
解决方案
修改<includes>配置,将枚举类型也纳入扫描范围:
<includes>task|task_status</includes>
如果需要扫描当前schema下所有表和枚举类型,也可以使用通用匹配模式:
<includes>.*</includes>
验证结果
调整配置后重新执行代码生成,jOOQ会自动生成与task_status对应的TaskStatus Java枚举类,Task实体中的status字段类型会变为TaskStatus,而非Object。
补充说明
PostgresDatabase默认开启<includeEnums>true</includeEnums>配置,只要枚举类型被<includes>规则匹配到,就会被自动识别并生成对应Java枚举,无需额外配置转换器或自定义生成器。
内容的提问来源于stack exchange,提问作者kaqqao
相关产品推荐
相关产品推荐

