如何配置jOOQ使自动生成代码内联完整Java包路径解决命名冲突
jOOQ 同名标识符编译冲突解决方案
jOOQ 原生提供配置项可实现歧义场景下自动使用全限定类名引用,无需重命名业务枚举值即可解决编译问题。
核心配置
你当前使用的3.11.12版本已经支持fullyQualifiedTypesWhenAmbiguous配置项,开启后生成器会自动检测当前类作用域内的同名标识符,遇到枚举值、类成员与导入的jOOQ生成类重名时,自动使用完整包路径引用类,从根源避免编译识别错误。
- XML格式生成配置(放在
<generator>标签下):
<generate> <!-- 仅在存在命名歧义时使用全限定类名,不会造成无意义的代码冗余 --> <fullyQualifiedTypesWhenAmbiguous>true</fullyQualifiedTypesWhenAmbiguous> </generate>
- 编程式生成配置:
new GenerationTool().setGenerate( new Generate().withFullyQualifiedTypesWhenAmbiguous(true) );
配置生效后,示例里冲突的代码行会自动生成如下内容,编译器可以正确识别Schema类:
@Override public Schema getSchema() { return blabla.jooq.internal.Internal.INTERNAL; }
备选方案
如果配置生效异常,还可以通过jOOQ的匹配器策略修改自动生成的Schema类命名,比如给所有Schema类统一加后缀,从命名层面避开冲突,示例配置:
<strategy> <matchers> <schemas> <schema> <schemaClass> <expression>$0Schema</expression> </schemaClass> </schema> </schemas> </matchers> </strategy>
不要开启全局全限定类名配置,会大幅增加生成代码的冗余度,仅开启歧义场景自动适配即可满足需求。
内容的提问来源于stack exchange,提问作者atarno
相关产品推荐
相关产品推荐

