【问题标题】:JOOQ generated records set to implement Record4 interface even when set not toJOOQ 生成的记录集实现 Record4 接口,即使设置不为
【发布时间】:2014-06-03 20:54:54
【问题描述】:

我正在使用这个生成器设置来创建我的 jooq 记录对象

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration xmlns="http://www.jooq.org/xsd/jooq-codegen-3.0.0.xsd">
    <jdbc>
        <driver>com.mysql.jdbc.Driver</driver>
        <url>jdbc:mysql://localhost:3306/local</url>
        <user>a</user>
        <password>b</password>
    </jdbc>
    <generator>
        <name>org.jooq.util.DefaultGenerator</name>
        <database>
            <name>org.jooq.util.mysql.MySQLDatabase</name>
            <includes>.*</includes>
            <excludes></excludes>
            <recordVersionFields></recordVersionFields>
            <recordTimestampFields></recordTimestampFields>
            <dateAsTimestamp>false</dateAsTimestamp>
            <unsignedTypes>true</unsignedTypes>
            <inputSchema>local</inputSchema>
            <outputSchema>heroku_abc</outputSchema>
        </database>
        <generate>
            <relations>true</relations>
            <deprecated>true</deprecated>
            <instanceFields>true</instanceFields>
            <generatedAnnotation>true</generatedAnnotation>
            <records>true</records>
            <pojos>false</pojos>
            <immutablePojos>false</immutablePojos>
            <interfaces>false</interfaces>
            <daos>false</daos>
            <jpaAnnotations>false</jpaAnnotations>
            <validationAnnotations>false</validationAnnotations>
            <globalObjectReferences>true</globalObjectReferences>
        </generate>
        <target>
            <packageName>dk.foo.entities.generated</packageName>
            <directory>/home/user/Development/git/dp/src/main/java/</directory>
        </target>
    </generator>
</configuration>

我似乎无法理解为什么我生成的记录实现了 Record4 接口。 虽然记录被标记为实现接口,但它没有实现其方法,导致来自我的 IDE - eclipse 的此错误消息:

BjCategoriesRecord 类型必须实现继承的抽象方法

Record4<Integer,Integer,String,Byte>.values(Integer, Integer, String, Byte)

我的一个记录:

@javax.annotation.Generated(value    = { "http://www.jooq.org", "3.1.0" },
                            comments = "This class is generated by jOOQ")
@java.lang.SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class CategoriesRecord extends org.jooq.impl.UpdatableRecordImpl<dk.foo.entities.generated.tables.records.CategoriesRecord> implements org.jooq.Record4<java.lang.Integer, java.lang.Integer, java.lang.String, java.lang.Byte> {

编辑: 稍微看一下,我就更清楚了。 如果我要求 eclipse 添加未实现的方法,我将得到其中的 4 个:

@Override
    public Record4<Integer, Integer, String, Byte> value1(Integer value) {
        // TODO Auto-generated method stub
        return null;
    } 

上述签名与之前使用代码生成器创建的签名不匹配...

/**
     * {@inheritDoc}
     */
    @Override
    public java.lang.Integer value1() {
        return getId();
    }

这让我想到了某种版本的不匹配。 codegen 使用 3.0.0,我的项目依赖于 3.3.0,生成的记录告诉我使用了 3.1.0。好乱啊。。

【问题讨论】:

  • “codegen 使用 3.0.0,我的项目依赖于 3.3.0,生成的记录告诉我使用了 3.1.0。真是一团糟” - 也是如此这解决了你的问题,然后呢? :-)
  • 你好 Lukas,是的……我正在使用 Ben Manes 最新版本的 jooq-gradle-plugin,它使用 3.1.0 - 最新更新。我已将我的依赖项降级为 3.1 而不是最新的 jOOQ 3.3.0,并且一切正常。我想知道,你有关于将他的插件合并到 jOOQ 中的任何更新吗?我找不到 jooq-gradle-codegen 包(不确定它的名称 ;-))
  • Ben Manes 不再维护这个插件。如果没有签署的 CLA,我们就无法合​​并(和维护)他的插件......
  • @LukasEder 我是否理解目前 jOOQ 没有为 Gradle 提供代码生成插件?

标签: java sql jooq


【解决方案1】:

刚刚调整了我的依赖项以包含正确版本的 jooq、jooq-meta 和 jooq-codegen,以使用与 Ben Manes 的插件相同的版本,jooq-gradle-plugin

猜你喜欢
  • 2016-01-05
  • 2021-05-24
  • 1970-01-01
  • 1970-01-01
  • 2020-06-25
  • 2014-02-05
  • 2020-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多