当两个函数具有相同名称

时间:2017-12-07 15:51:10

标签: java sql code-generation jooq

修改

我注意到我有两个具有相同名称的函数,但是不同的参数/列输出,这在SQL中是合法的(至少是PostgreSQL)。

jOOQ设法为这种情况生成类(至少达到3.8.1),但不再能够这样做了。我尝试删除这两个函数中的一个,它工作正常。我重新创建它,它又失败了。

是否有一个参数或某些东西可以恢复以前的行为?

谢谢

原始帖子

我一直在使用jOOQ 3.8.1,它运行良好。今天,我尝试升级到3.10.2,并且生成器不再工作,它在Table和Record类中为某些函数生成重复的变量/函数:

My_Function(table)class

/**
 * 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>

1 个答案:

答案 0 :(得分:0)

这是一个已知问题,从jOOQ 3.10开始尚未修复:https://github.com/jOOQ/jOOQ/issues/4055