[Seasar-user:716] SqlReader で Column 名から "_" が消える

B rmail.plala.or.jp suga suga_k
2004年 4月 28日 (水) 20:40:38 JST


スガです。

SqlReader で DataSet を読み出すと、Column 名から "_" が消えています。


S2Unit.html にデータベースの内容を Excel に書き出す例があります。

SqlReader reader = (SqlReader) getComponent(SqlReader.class);
XlsWriter writer = (XlsWriter) getComponent(XlsWriter.class);
writer.write(reader.read());

このとき、テーブルのカラム名に "_" が含まれる場合、出来上がった
Excel ファイルでは "_" が消えてしまいます。

HOGE_NAME → HOGENAME

# org.seasar.extension.dataset.impl.
#     SqlReader#read
#     ↓
#     SqlTableReader#read
#     ↓
#     BasicSelectHandler#execute
#     ↓
#     DataTableResultSetHandler#handle
#     ↓
#     DataColumnPropertyHandler#createPropertyTypes
#     ↓

org.seasar.extension.jdbc.impl.
    AbstractPropertyHandler#convertPropertyName
で
return StringUtil.replace(propertyName, "_", "");
として消しているためのようです。


S2JDBC でカラム名→プロパティ名とするときの処理だと思いますが、
この仕様だと扱えるカラム名が限定されてしまいます。


対処案:
DataColumnPropertyHandler で convertPropertyName をオーバーライド
すれば "_" は消えなくなりますが、これが DataColumnPropertyHandler
の目的に適っているかどうかは分かりません (^^;

protected String convertPropertyName(String propertyName) {
    return propertyName;
}

--------------------------------------------------------------
 e-mail: [E-MAIL ADDRESS DELETED]
                                              スガ
--------------------------------------------------------------



Seasar-user メーリングリストの案内