[Seasar-user:1216] Re: DatabaseMetaDataUtil.getPrimaryKeySet について

Yasuo Higa higa
2004年 11月 25日 (木) 18:30:35 JST


<[E-MAIL ADDRESS DELETED]> の、
   "[Seasar-user:1214] DatabaseMetaDataUtil.getPrimaryKeySetについて" において、
   ""SRI 深尾" <[E-MAIL ADDRESS DELETED]>"さんは書きました:

ひがです。

> はじめまして。深尾と申します。
> 
> 現在S2DAOを新規システムで使用させていただこうと思い
> 単純な検証作業を行っているのですが、
> 
> 「更新SQLの自動生成」において
> updateメソッドが発行するSQLのprimaryKey項目表記が
> 小文字になってしまうという現象があります。
> 
> これは仕様として考えればよろしいでしょうか。
> その場合、今回の現象に対する回避策等ございますでしょうか。
> (見当違いのことを言っていましたらすみません。ご指摘下さい)
> 
org.seasar.dao.impl.BeanMetaDataImplの257行目の
setupDatabaseMetaDataを下記のように書き換えるとどうですか。

private void setupDatabaseMetaData(DatabaseMetaData dbMetaData) {
  Set primaryKeySet = DatabaseMetaDataUtil.getPrimaryKeySet(dbMetaData,
    tableName_);
  Set columnSet = DatabaseMetaDataUtil.getColumnSet(dbMetaData,
    tableName_);
  List pkeyList = new ArrayList();
  for (int i = 0; i < getPropertyTypeSize(); ++i) {
    PropertyType pt = getPropertyType(i);
    if (primaryKeySet.contains(pt.getColumnName())) {
      pt.setPrimaryKey(true);
      pkeyList.add(pt.getColumnName());
    } else {
      pt.setPrimaryKey(false);
    }
    if (columnSet.contains(pt.getColumnName())) {
      pt.setPersistent(true);
    } else {
      pt.setPersistent(false);
    }
  }
  primaryKeys_ = (String[]) pkeyList.toArray(new String[pkeyList.size()]);
  setupAutoInsertSql();
  setupAutoUpdateSql();
  setupAutoDeleteSql();
}
---
Yasuo Higa <[E-MAIL ADDRESS DELETED]>
INFORMATION SERVICES INTERNATIONAL-DENTSU,LTD.



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