2

「char(1)」のように定義されたいくつかの列 (MD5、FLAGCONFIRMED、FLAGCHANGEPASSWORD) を持つテーブルが MySQL にあり、可能な値は 0 と 1 のみです。コード生成で jOOQ がこれらをブール値に変換するようにします。

コンバーターを作成しました:

public class BooleanConverter implements org.jooq.Converter<String, Boolean>{

   private static final long serialVersionUID = -4785961538634851898L;

   @Override
   public Boolean from(String arg0) {
      if (arg0 == null) {
         return null;
      }
      return arg0.equals("1");
   }

   @Override
   public Class<String> fromType() {
      return String.class;
   }

   @Override
   public String to(Boolean arg0) {
      if (arg0 == null) {
         return null;
      }
      return arg0.booleanValue() ? "1" : "0";
   }

   @Override
   public Class<Boolean> toType() {
      return Boolean.class;
   }

}

次に、pom でコンバーターを構成しました (ソースの生成に maven を使用しています)。

<customTypes>
  <customType>
    <name>java.lang.Boolean</name>
    <converter>org.test.converter.BooleanConverter</converter>
  </customType>
</customTypes>

<forcedTypes>
  <forcedType>
    <name>java.lang.Boolean</name>
    <expressions>.*\.FLAGCHANGEPASSWORD,.*\.FLAGCONFIRMED,.*\.MD5.*</expressions>
  </forcedType>
</forcedTypes>

コードは正常に生成されますが、型は変換されず、型は String のままです。

/**
 * The table column <code>mmw.enduser.MD5</code>
 */
public final org.jooq.TableField<de.kybeidos.mmw.data.tables.records.EnduserRecord, java.lang.String> MD5 = createField("MD5", org.jooq.impl.SQLDataType.CHAR, this);

どうすれば機能しますか?

編集:jOOQ 2.6.1を使用しています

4

1 に答える 1