[Seasar-user:1572] Re: 不完全なSELECT文が生成される

Yasuo Higa higa
2005年 3月 8日 (火) 13:05:54 JST


<[E-MAIL ADDRESS DELETED]> の、
   "[Seasar-user:1571] 不完全なSELECT文が生成される" において、
   "Asuka Ito <[E-MAIL ADDRESS DELETED]>"さんは書きました:

ひがです。

> 伊藤と申します。
> 
> S2Daoを使わせていただいているのですが、(おそらく)DAOに渡すBeanとDB上の
> テーブルの構造が一致していないとき、DAOが不完全なSELECT文を生成するよう
> なのですが、これは仕様でしょうか?
> 
> 再現性が不明確で申し訳ないのですが、生成される不完全なSELECT文はいつも同
> じパターンでして
> 
>   SELEC FROM XXXX WHERE YYYY='ZZZZ'
> 
これだけの情報じゃ良く分からないんですが、プライマリーキーやカラムの情報が
JDBCのメタデータから取得できてないんじゃないかと思います。
framework.util.DatabaseMetaDataUtilのgetPrimaryKeySet,getColumnSetに
ブレークポイントを当てて、動作を見るとその様子が確認できます。

S2Daoでは、テーブルの構造とBeanの構造が異なっていても構いません。
テーブルにないBeanのプロパティは無視されますが、テーブルのメタデータが
取得できない場合には、その判断が出来なくなります。
http://homepage3.nifty.com/seasar/s2dao.html#NoPersistentColumns
にあるようにNO_PERSISTENT_PROPSを明示的に指定すると、
JDBCのメタデータなしでもカラムの情報を判断できます。
また、http://homepage3.nifty.com/seasar/s2dao.html#IDAutoGenerate
にかかれているように、xxx_ID = "assigned";を使えば、
JDBCのメタデータなしで、プライマリーキーを指定することも出来ます。
---
ひがやすを(http://d.hatena.ne.jp/higayasuo/)



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