1

アプリケーションの SQL レイヤーとして Jooq を使用しています。code/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 に答える