【发布时间】:2018-05-21 18:47:41
【问题描述】:
编辑
我注意到我有两个函数名称相同,但参数/列输出不同,这在 SQL 中是合法的(至少是 PostgreSQL)。
jOOQ 设法为这种情况生成类(至少到 3.8.1),但不再能够这样做。我尝试删除这两个功能之一,它工作正常。我重新创建了它,它又失败了。
是否有参数或其他东西可以恢复以前的行为?
谢谢
原帖
我一直在使用 jOOQ 3.8.1,它运行良好。今天,我尝试升级到 3.10.2,并且生成器不再工作,它为某些函数在 Table 和 Record 类中生成重复的变量/函数:
My_Function(表)类
/**
* The column <code>public.my_function.pde_id</code>.
*/
public final TableField<My_FunctionRecord, Long> PDE_ID = createField("pde_id", org.jooq.impl.SQLDataType.BIGINT, this, "");
/**
* The column <code>public.my_function.pde_id</code>.
*/
public final TableField<My_FunctionRecord, Long> PDE_ID = createField("pde_id", org.jooq.impl.SQLDataType.BIGINT, this, "");
[...same for all fields]
My_FunctionRecord 类
/**
* Setter for <code>public.my_function.pde_id</code>.
*/
public void setPdeId(Long value) {
set(0, value);
}
/**
* Getter for <code>public.my_function.pde_id</code>.
*/
public Long getPdeId() {
return (Long) get(0);
}
/**
* Setter for <code>public.my_function.pde_id</code>.
*/
public void setPdeId(Long value) {
set(1, value);
}
/**
* Getter for <code>public.my_function.pde_id</code>.
*/
public Long getPdeId() {
return (Long) get(1);
}
[...same for all fields]
public My_FunctionRecord(Long pdeId, Long pdeId, [...same for all fields]) {
super(My_Function.MY_FUNCTION);
set(0, pdeId);
set(1, pdeId);
[...same for all fields]
}
我使用 3.9.1 进行了测试,得到了相同的结果。这是一个已知问题吗?
还有我的jooq生成器配置:
<generator>
<database>
<name>${db.jooq}</name>
<includes>.*</includes>
<excludes></excludes>
<inputSchema>public</inputSchema>
</database>
<generate>
<records>true</records>
<deprecated>false</deprecated>
</generate>
<target>
<packageName>com.generated.jooq</packageName>
<directory>${project.basedir}/src/main/java</directory>
</target>
</generator>
【问题讨论】:
-
为了记录,这个问题也在邮件列表中被问过,这里是:groups.google.com/forum/#!topic/jooq-user/NPLtbPaTQmM,以及在 GitHub 上:github.com/jOOQ/jOOQ/issues/6896
标签: java sql code-generation jooq