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