当切换到新的 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
更新:只要看到这个警告,看来最终生成的类有效。