当切换到新的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
更新:看到这个警告,似乎最终生成的类工作了。
1条答案
按热度按时间sycxhyv71#
这不是一个bug。从jOOQ 3.19开始,现在支持to-many relationship paths。
DefaultGeneratorStrategy
对to-many
路径使用与to-one
路径相同的命名模式。如果您的表是自引用的,则存在命名冲突,并且不会生成to-many
路径。您可以:
implicitJoinPathsToMany = false
注意,
nu.studer.jooq
插件也将生成此警告,只要它支持jOOQ 3.19