[Seasar-user:3693] [要望] S2Dao で扱うカラム名大文字小文字を COLUMN アノテーション優先に変更

suga [E-MAIL ADDRESS DELETED]
2006年 5月 28日 (日) 11:10:55 JST


suga です。

MS SQLServer 2005 で、カラム名の大文字小文字を区別する設定のときに
S2Dao の自動生成 SQL が動作しないという問題があります。
カラム名を大文字で定義していても S2Dao が小文字で SQL を生成して
しまいます。

supportsMixedCaseIdentifiers(DatabaseMetaData) が正しく値を返さない
のが問題だと思いますが、かといって対応できないのは困りますので、
なんらかの救済措置が必要だと思います。

# JDBC 2.0 では常に false を返すのが仕様だったらしい?
# http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/sql/DatabaseMetaData.html#supportsMixedCaseIdentifiers()


現状は 1, 2 のようになっています。

1. 以下でプロパティ名、COLUMN アノテーションを読んでいる
org.seasar.dao.impl.DtoMetaDataImpl#createPropertyType

2. 以下で DatabaseMetaData を優先させる
org.seasar.dao.impl.BeanMetaDataImpl#setupPropertyPersistentAndColumnName
    "_" を取り除いたものと大文字小文字無視比較
    一致するならメタデータから取得したカラムが有効 (小文字)


これを次のように変更すれば実現できると思います。

a. PropertyType に COLUMN アノテーションかどうかを記録できるように
b. COLUMN アノテーションから取得したかどうかを 1. で記録
c. 2. で採用する優先順位を以下のように変える

    COLUMN アノテーション > DatabaseMetaData > プロパティ名

-- 
suga ( [E-MAIL ADDRESS DELETED] )



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