[Seasar-user:1574] Re: 不完全なSELECT文が生成される
Hideaki Maekawa
maekawa
2005年 3月 8日 (火) 14:16:11 JST
前川です
ちょっと話が横道にそれますが…
Linux(というかケースCase Sentibなプラットホーム)上のMySQLで、大文字と小
文字を混ぜたテーブル名(というか全ての識別名)を使用するのは、Javaを使う限
りやめたほうが無難です。
というのもJDBCであるConnector/Jが、ろくな情報を返してくれないからです。
DatabaseMetaData実装のソースをご覧になればわかると思いますが、この辺の情
報を直打ちでfalseとか返しています。
#おそらくDBMS自身がこの辺の情報を持っていないのでは。
Seasarで関係のあるDatabaseMetaData#supportsMixedCaseIdentifiers()もfalse
オンリーです。にもかかわらずLinux上のMySQLは、Case Sentibな動作をします。
#MySQLの設定にCaseを無視するオプションがあればいいのですが。
------
> 伊藤です。
>
>
> Tue, 08 Mar 2005 13:07:58 +0900
> Yasuo Higa <[E-MAIL ADDRESS DELETED]> wrote:
>
> > これだけの情報じゃ良く分からないんですが、プライマリーキーやカラムの情報が
> > JDBCのメタデータから取得できてないんじゃないかと思います。
> > framework.util.DatabaseMetaDataUtilのgetPrimaryKeySet,getColumnSetに
> > ブレークポイントを当てて、動作を見るとその様子が確認できます。
>
> 確認してみました。実はいろんなRDBMSを試しているうちに正直、再現性がわか
> らなくなっていたのですが少し整理がついた気がします。
>
> 例えば、Bean名が Hogehoge だったとします。
>
> このときgetColumnSetの引数tableNameにはHogehogeが入ってきますが、
> convertIdentifierを通ると、tableNameはhogehogeになっています(つまり、先
> 頭文字が小文字)。
> しかし、生成されるSELECT文は
>
> SELEC FROM Hogehoge
> ~大文字
>
> です。私が準備しているテーブル名は、Hogehogeです。
> MySQLは、テーブル名の大文字小文字を区別するので、hogehogeでメタデータは
> 取得できなかったということになるのでしょうか?(すいませんソースを追いき
> れません)
>
> テーブル名をhogehogeにすると、今度は生成されたSELECT文が通らなくなるよう
> なので、結局MySQLではSELECT文の自動生成は使えないような気がするのですが、
> どうなのでしょうか?
>
> 以上よろしくお願いいたします。
>
>
> --
> Asuka Ito <[E-MAIL ADDRESS DELETED]>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> http://lists.sourceforge.jp/mailman/listinfo/seasar-user
--
株式会社フリーダム システム開発部
前川英昭 <[E-MAIL ADDRESS DELETED]>
0x2ED8CFD9 : 8E27 33DD 3480 C83A 15AD EB27 DC37 1DBE 2ED8 CFD9
Seasar-user メーリングリストの案内