[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 メーリングリストの案内