1

我在我的应用程序中使用 Jooq 作为 SQL 层。它可以很好地生成代码/pojos/records/routines,但是 MySQL 程序所在的 Routines.java 无法编译,因为它生成了一个重复的方法:

Routines.java 第 989 行:

/**
 * Call mmw.logMsg
 *
 * @param __Message
 * @param __Code
 * @param __Ean
 * @param __Erpnumber
 * @param __Proc
 * @throws org.jooq.exception.DataAccessException if something went wrong executing the query
 */
public static java.lang.Byte logmsg(org.jooq.Configuration configuration, java.lang.String __Message, java.lang.String __Code, java.lang.String __Ean, java.lang.String __Erpnumber, java.lang.String __Proc) {
  com.mycompany.data.routines.Logmsg f = new com.mycompany.data.routines.Logmsg();
  f.set__Message(__Message);
  f.set__Code(__Code);
  f.set__Ean(__Ean);
  f.set__Erpnumber(__Erpnumber);
  f.set__Proc(__Proc);

  f.execute(configuration);
  return f.getReturnValue();
}

Routines.java 第 1061 行:

/**
 * Call mmw.logMsg
 *
 * @param __Message IN parameter
 * @param __Code IN parameter
 * @param __Ean IN parameter
 * @param __Erpnumber IN parameter
 * @param __Proc IN parameter
 * @throws org.jooq.exception.DataAccessException if something went wrong executing the query
 */
public static void logmsg(org.jooq.Configuration configuration, java.lang.String __Message, java.lang.String __Code, java.lang.String __Ean, java.lang.String __Erpnumber, java.lang.String __Proc) {
  com.mycompany.data.routines.Logmsg p = new com.mycompany.data.routines.Logmsg();
  p.set__Message(__Message);
  p.set__Code(__Code);
  p.set__Ean(__Ean);
  p.set__Erpnumber(__Erpnumber);
  p.set__Proc(__Proc);

  p.execute(configuration);
}

错误:Routines.java:[1061,20] error: method logmsg(Configuration,String,String,String,String,String) is already defined in class Routines

4

1 回答 1

1

您的数据库中似乎有一个具有完全相同名称和完全相同签名的过程和函数...... jOOQ 不支持。

我为此创建了一个错误:
https ://github.com/jOOQ/jOOQ/issues/1908

作为一种解决方法,如果可以:

  • 删除/重命名过程或函数
  • 针对这种情况手动修补生成的代码

更新:此问题已在 jOOQ 3.2 中修复

于 2012-10-29T17:07:29.407 回答