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

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

当切换到新的 jOOQ Gradle 插件 3.19.0 时,我发现另一个问题,包含引用自身的字段的前一个示例实体不起作用。

升级新Gradle插件的尝试在这里,https://github.com/hantsy/spring-r2dbc-sample/pull/320

导致问题的表。

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

更新:只要看到这个警告,看来最终生成的类有效。

kotlin gradle jooq jooq-codegen
1个回答
0
投票

这不是一个错误。从 jOOQ 3.19 开始,现在支持多关系路径

DefaultGeneratorStrategy
to-many
路径使用与
to-one
路径相同的命名模式。如果您的表是自引用的,则存在命名冲突,并且根本不会生成
to-many
路径。

您可以:

  • 使用 implicitJoinPathsToMany = false
     关闭该功能
  • 忽略警告
  • 实施生成器策略来消除名称歧义

注意,

nu.studer.jooq
插件一旦支持jOOQ 3.19,也会生成此警告

© www.soinside.com 2019 - 2024. All rights reserved.