【发布时间】: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 提供代码生成插件?