Beans.copyでBooleanを扱う

データベース上では char(1) のカラムでフラグとして扱い、JSP上では(Formでは) boolean にしてチェックボックスの on/off で使うということをした。

Entity → Form のBeans.copy は問題ない。"1"はtrueとしてくれるし、"0"はfalseとしてくれる。しかしだ。逆はこうなる。trueは"true"となり、falseは"false"となってしまうのだ。そりゃSQLExceptionになる。桁あふれしてしまう。

どうにかならんかなぁと思って、無理やりBooleanConverterを作った。
あってるかどうか自信ないけど。Commons Lang便利すぎ。

import org.apache.commons.lang.BooleanUtils;
import org.seasar.framework.beans.Converter;

public class BooleanConverter implements Converter {

    public BooleanConverter() {
    }

    public Object getAsObject(String value) {
    	return BooleanUtils.toBooleanObject(value);
    }

    public String getAsString(Object value) {
    	return BooleanUtils.toBoolean((Boolean)value) ? "1" : "0";
    }

    public boolean isTarget(Class clazz) {
        return clazz == Boolean.class;
    }
}

呼び出しは、

String[] boolColumns = {"col1", "col2"};
Beans.copy(form, entity).converter(new BooleanConverter(), boolColumns).execute();

という感じ。いちおう動いています。
こんなんでいいのかな?ギリギリずれてるような気もする。