我有下表,名为 YNM:
id name
1 YES
2 NO
3 MAYBE
并希望 JOOQ 生成以下 java 枚举:
public enum YNM {
YES,NO,MAYBE;
}
我知道 JOOQ 3 中放弃了对此的支持,因为它过于复杂/反直觉。有办法实现吗?
提前致谢。
最佳答案
当然,您可以通过几个步骤在您这边重新实现已删除的功能:
1。为该枚举实现生成器
您需要覆盖 JavaGenerator
实现用于将主数据(可能是多个表)转换为枚举的代码生成。它是如何工作的完全取决于你,例如你可以:
- 单列主数据表
- ID/VALUE 映射表
- ID/VALUE/Comment 映射表
- 其他布局
2。生成 ForcedType
这些枚举的配置
每当引用这样的主数据表时,您应该使用 <forcedType/>
将外键列重新连接到该枚举。配置。 This is best done by configuring your code generation programmatically ,因为这会让您对 jOOQ 代码生成配置有更多的动态控制。
This step is documented more in detail in Bill O'Neil's answer .
3。防止生成主数据表
除上述之外,您可能应该从生成的输出中删除主数据表本身。在您的情况下,这应该导致配置:
<excludes>YNM</excludes>
或者,如果您有多个主数据表:
<excludes>YNM|OTHER_MASTER_DATA_TABLE|...</excludes>
排除这些表将阻止从 jOOQ 客户端代码访问它们,并删除生成代码中的外键信息,这可能会造成混淆。
关于java - 使用 JOOQ 从表生成枚举类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46429671/