新的jOOQ Gradle插件无法正确处理自引用关系

cyej8jka  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(114)

当切换到新的jOOQ Gradle插件3.19.0时,我发现另一个问题是,包含字段引用本身的前一个示例实体不起作用。
升级新Gradle插件的尝试在这里,https://github.com/hantsy/spring-r2dbc-sample/pull/320
导致问题的table。

CREATE TABLE IF NOT EXISTS nodes (
    id UUID NOT NULL /* [jooq ignore start] */ DEFAULT uuid_generate_v4() /* [jooq ignore stop] */,
    name VARCHAR(50),
    description VARCHAR(255),
    parent_id UUID
);
ALTER TABLE nodes ADD CONSTRAINT nodes_pk PRIMARY KEY (id);
ALTER TABLE nodes ADD CONSTRAINT nodes_parent_fk FOREIGN KEY (parent_id) REFERENCES nodes(id) /* [jooq ignore start] */ON UPDATE CASCADE/* [jooq ignore stop] */;

字符串
运行./gradlew clean jooqCodegenMain命令时,您将看到以下警告消息。

Ambiguous key name       : The database object nodes_parent_fk generates an inbound key method name nodes which conflicts with the previously generated outbound key method name. Use a 
custom generator strategy to disambiguate the types. More information here:
 - https://www.jooq.org/doc/latest/manual/code-generation/codegen-generatorstrategy/
 - https://www.jooq.org/doc/latest/manual/code-generation/codegen-matcherstrategy/


但使用nu.studer.jooq插件的原始版本运行良好:https://github.com/hantsy/spring-r2dbc-sample/tree/master/jooq-kotlin-co-gradle

更新:看到这个警告,似乎最终生成的类工作了。

sycxhyv7

sycxhyv71#

这不是一个bug。从jOOQ 3.19开始,现在支持to-many relationship pathsDefaultGeneratorStrategyto-many路径使用与to-one路径相同的命名模式。如果您的表是自引用的,则存在命名冲突,并且不会生成to-many路径。
您可以:

  • Turn off the feature使用implicitJoinPathsToMany = false
  • 忽略警告
  • 实施生成器策略以消除名称的歧义

注意,nu.studer.jooq插件也将生成此警告,只要它支持jOOQ 3.19

相关问题