Java jOOQ:用maven生成代码

Java jOOQ:用maven生成代码,java,postgresql,maven,jooq,Java,Postgresql,Maven,Jooq,你好 我正在使用jOOQ用java尝试一个简单的postgreSQL设置。现在,我使用pgadmin3创建了一个名为Products的表,其中包含两列: CREATE TABLE public."Products" ( id integer NOT NULL, username text, CONSTRAINT id PRIMARY KEY (id) ) WITH ( OIDS=FALSE ); ALTER TABLE public."Products" OWNER TO p

你好

我正在使用jOOQ用java尝试一个简单的postgreSQL设置。现在,我使用pgadmin3创建了一个名为Products的表,其中包含两列:

CREATE TABLE public."Products"
(
  id integer NOT NULL,
  username text,
  CONSTRAINT id PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE public."Products"
  OWNER TO postgres;
现在,我尝试使用java与这个表交互。我可以向postgres请求一个表列表,这样我就知道连接是有效的。但是,如果我尝试进行maven安装(以generate为目标,我想要我的java类),我会得到以下错误:

[ERROR] /home/dries/workspace/postgres/target/generated-sources/jooq/org/jooq/util/maven/example/PublicFactory.java:[15,58] cannot find symbol
  symbol:   class PostgresFactory
  location: package org.jooq.util.postgres
[ERROR] /home/dries/workspace/postgres/target/generated-sources/jooq/org/jooq/util/maven/example/tables/Products.java:[12,44] cannot find symbol
  symbol:   class UpdatableTableImpl
  location: package org.jooq.impl
[ERROR] /home/dries/workspace/postgres/target/generated-sources/jooq/org/jooq/util/maven/example/Keys.java:[31,120] method createUniqueKey in class org.jooq.impl.AbstractKeys cannot be applied to given types;
  required: org.jooq.Table<R>,org.jooq.TableField<R,?>[]
  found: org.jooq.util.maven.example.tables.Products,org.jooq.TableField<org.jooq.util.maven.example.tables.records.ProductsRecord,java.lang.Integer>
  reason: cannot infer type-variable(s) R
    (argument mismatch; org.jooq.util.maven.example.tables.Products cannot be converted to org.jooq.Table<R>)
[ERROR] /home/dries/workspace/postgres/target/generated-sources/jooq/org/jooq/util/maven/example/tables/records/ProductsRecord.java:[52,66] incompatible types: org.jooq.util.maven.example.tables.Products cannot be converted to org.jooq.Table<org.jooq.util.maven.example.tables.records.ProductsRecord>
[ERROR] /home/dries/workspace/postgres/target/generated-sources/jooq/org/jooq/util/maven/example/PublicFactory.java:[83,62] cannot find symbol
  symbol:   method getSettings()
  location: class org.jooq.util.maven.example.PublicFactory
[ERROR] /home/dries/workspace/postgres/target/generated-sources/jooq/org/jooq/util/maven/example/tables/Products.java:[24,9] method does not override or implement a method from a supertype
[ERROR] /home/dries/workspace/postgres/target/generated-sources/jooq/org/jooq/util/maven/example/tables/Products.java:[34,125] cannot find symbol
  symbol:   method createField(java.lang.String,org.jooq.DataType<java.lang.Integer>,org.jooq.util.maven.example.tables.Products)
  location: class org.jooq.util.maven.example.tables.Products
[ERROR] /home/dries/workspace/postgres/target/generated-sources/jooq/org/jooq/util/maven/example/tables/Products.java:[39,130] cannot find symbol
  symbol:   method createField(java.lang.String,org.jooq.DataType<java.lang.String>,org.jooq.util.maven.example.tables.Products)
  location: class org.jooq.util.maven.example.tables.Products
[ERROR] /home/dries/workspace/postgres/target/generated-sources/jooq/org/jooq/util/maven/example/tables/Products.java:[49,9] method does not override or implement a method from a supertype
[ERROR] /home/dries/workspace/postgres/target/generated-sources/jooq/org/jooq/util/maven/example/tables/Products.java:[54,9] method does not override or implement a method from a supertype
[ERROR] /home/dries/workspace/postgres/target/generated-sources/jooq/org/jooq/util/maven/example/tables/Products.java:[60,9] method does not override or implement a method from a supertype
[ERROR] /home/dries/workspace/postgres/target/generated-sources/jooq/org/jooq/util/maven/example/Public.java:[36,40] method asList in class java.util.Arrays cannot be applied to given types;
  required: T[]
  found: org.jooq.util.maven.example.tables.Products
  reason: varargs mismatch; org.jooq.util.maven.example.tables.Products cannot be converted to org.jooq.Table<?>
[ERROR]/home/dries/workspace/postgres/target/generated sources/jooq/org/jooq/util/maven/example/PublicFactory.java:[15,58]找不到符号
符号:PostgresFactory类
位置:包org.jooq.util.postgres
[错误]/home/dries/workspace/postgres/target/generated sources/jooq/org/jooq/util/maven/example/tables/Products.java:[12,44]找不到符号
符号:类UpdateableTableImpl
位置:包org.jooq.impl
[错误]/home/dries/workspace/postgres/target/generated sources/jooq/org/jooq/util/maven/example/Keys.java:[31120]类org.jooq.impl.AbstractKeys中的方法createUniqueKey不能应用于给定类型;
必填项:org.jooq.Table,org.jooq.TableField[]
找到:org.jooq.util.maven.example.tables.Products,org.jooq.TableField
原因:无法推断类型变量R
(参数不匹配;org.jooq.util.maven.example.tables.Products无法转换为org.jooq.Table)
[错误]/home/dries/workspace/postgres/target/generated sources/jooq/org/jooq/util/maven/example/tables/records/ProductsRecord.java:[52,66]不兼容类型:org.jooq.util.maven.example.tables.Products无法转换为org.jooq.Table
[错误]/home/dries/workspace/postgres/target/generated sources/jooq/org/jooq/util/maven/example/publicfacture.java:[83,62]找不到符号
符号:方法getSettings()
位置:类org.jooq.util.maven.example.PublicFactory
[错误]/home/dries/workspace/postgres/target/generated sources/jooq/org/jooq/util/maven/example/tables/Products.java:[24,9]方法不重写或实现超类型中的方法
[错误]/home/dries/workspace/postgres/target/generated sources/jooq/org/jooq/util/maven/example/tables/Products.java:[34125]找不到符号
符号:方法createField(java.lang.String、org.jooq.DataType、org.jooq.util.maven.example.tables.Products)
位置:class org.jooq.util.maven.example.tables.Products
[错误]/home/dries/workspace/postgres/target/generated sources/jooq/org/jooq/util/maven/example/tables/Products.java:[39130]找不到符号
符号:方法createField(java.lang.String、org.jooq.DataType、org.jooq.util.maven.example.tables.Products)
位置:class org.jooq.util.maven.example.tables.Products
[错误]/home/dries/workspace/postgres/target/generated sources/jooq/org/jooq/util/maven/example/tables/Products.java:[49,9]方法不重写或实现超类型中的方法
[错误]/home/dries/workspace/postgres/target/generated sources/jooq/org/jooq/util/maven/example/tables/Products.java:[54,9]方法不重写或实现超类型中的方法
[错误]/home/dries/workspace/postgres/target/generated sources/jooq/org/jooq/util/maven/example/tables/Products.java:[60,9]方法不重写或实现超类型中的方法
[错误]/home/dries/workspace/postgres/target/generated sources/jooq/org/jooq/util/maven/example/Public.java:[36,40]类java.util.array中的方法asList不能应用于给定类型;
必填项:T[]
找到:org.jooq.util.maven.example.tables.Products
原因:varargs不匹配;org.jooq.util.maven.example.tables.Products无法转换为org.jooq.Table
这个类似乎是生成的(我可以在目标文件夹中找到它)。然而,在eclipse或intellij中,我无法在路径中找到它。 无论如何,构建过程都不应该失败

有人知道构建失败的原因吗


谢谢,大家好。

所以,为了在这里得到关于堆栈溢出的正式答案,这里再次给出我的评论作为答案

从外观上看,您使用的是过时的jOOQ代码生成器版本和更新的jOOQ运行时版本。两者不匹配,这就是为什么会出现这些异常


我注意到了,因为jOOQ 3.x代码生成器不再生成
PublicFactory
类。

PublicFactory
”-您使用的是jOOQ的哪个古老版本?:)介意先升级吗?另外,你能发布你的相关
pom.xml
配置吗?天哪,我是在3.7.2版上为jOOQ写的,但我似乎不小心复制粘贴了2.6.4版的插件。谷歌的搜索结果有时会导致文档的过时版本。这件事我要怪星期一!谢谢卢卡斯:)那最好期待周二吧!如果您将最新的代码生成器示例。。。在查看文档时,我发现很多旧的配置,但找不到正确的设置(特别是在使用spring boot时)@ПüффП:您能指出过期的文档吗?