[Seasar-user:1747] アンダーバーを含むカラム名の自動マッピングについて

AGATA Toshitaka agata
2005年 4月 5日 (火) 21:24:23 JST


縣です。

>S2Dao1.0.25
>-カラム名に_がある場合でも自動的にマッピング
> できるようにしました。S2.2.6が必要です。

S2Dao1.0.25の_がある場合の自動マッピングについて要望です。

自動マッピングが標準機能として実装されて、非常に助かっています。
しかし、TABLEアノテーションで指定されたテーブル以外のカラムでは、
自動的にマッピングされないようなので、ちょっと困っています。

今はAbstractBeanMetaDataResultSetHandlerを以下のように書き換えて、
対応しています。(パフォーマンスは考慮していません・・・)
ぜひ、標準機能として対応を検討していただけると嬉しいです。

---------------------------------------------------------
org.seasar.dao.impl.AbstractBeanMetaDataResultSetHandler
---------------------------------------------------------
  protected Object createRow(ResultSet rs, Set columnNames)
      throws SQLException {
    Object row = ClassUtil.newInstance(beanMetaData_.getBeanClass());
    for (int i = 0; i < beanMetaData_.getPropertyTypeSize(); ++i) {
      PropertyType pt = beanMetaData_.getPropertyType(i);
      if (columnNames.contains(pt.getColumnName())) {
        ValueType valueType = pt.getValueType();
        Object value = valueType.getValue(rs, pt.getColumnName());
        PropertyDesc pd = pt.getPropertyDesc();
        pd.setValue(row, value);
      } else {
        for (Iterator iter = columnNames.iterator(); iter.hasNext();) {
          String columnName = (String)iter.next();
          String columnName2 = StringUtil.replace(columnName, "_", "");
          if (columnName2.equalsIgnoreCase(pt.getColumnName())) {
            ValueType valueType = pt.getValueType();
            Object value = valueType.getValue(rs, columnName);
            PropertyDesc pd = pt.getPropertyDesc();
            pd.setValue(row, value);
          }
        }
      }
    }
    return row;
  }
---------------------------------------------------------




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