[Seasar-user:1973] Re: S2Dao でTABLEアノテーションを間違えると

yone@abby.co.jp yone
2005年 5月 16日 (月) 04:03:27 JST


米林です


> 勉強をかね、ソースを見てみたのですが
> BeanMetaDataImplクラスの  setupPropertyPersistentAndColumnName() メソッドの 
> 
>  Set columnSet = DatabaseMetaDataUtil.getColumnSet(dbMetaData, 
> tableName_);
> の後で columnSet.size() == 0 なら エラーにすれば良いようでした。
>
> ここがエラーチェックに最適な場所かどうか判りませんが、
> 次のリリースの時に対応してもらえると嬉しいです。
→私もドキュメント・プロジェクトの勉強も兼ねてソースを見てみました。
 上記箇所より、org.seasar.framework.util.DatabaseMetaDataUtil.java
  の80行目以降の86行目で最終チェックを入れたら良いのかな?と思いました。
=========================================================================================
  addColumns(dbMetaData, convertIdentifier(dbMetaData, schema), 
convertedTableName, set);
  if (set.size() == 0) {
   addColumns(dbMetaData, schema, tableName, set);
  }
  if (set.size() == 0 && schema != null) {
   addColumns(dbMetaData, null, convertedTableName, set);
   if (set.size() == 0) {
    addColumns(dbMetaData, null, tableName, set);
  // ここで最終チェックを入れたら如何でしょうか?
   }
  }

=========================================================================================

#尚、上記 addColumns メソッド内 java.sql.DatabaseMetaData#getColumns の結果取得で
 set.add(rs.getString(4)) している箇所を見てカラム名の大文字・小文字混在時の 

 場合は?とふと思ったのですが、
 java.sql.DatabaseMetaData#supportsMixedCaseIdentifiers
 チェックがばっちり入ってました。
 以前、OracleからSQLサーバの移行で、カラム名のチェックにてこずった事を
 思い出しました。

 やはりソースを見るのはとても勉強になりますね。 





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