[Seasar-user:1454] Re: 障害報告:S2Dao 1.0.17のN:

Tsutomu Yano benbrand
2005年 1月 21日 (金) 02:06:50 JST


 矢野です。
 先日、N:1マッピングでWHERE句にテーブル名が記述されない件で報告しましたが、原因が
分かりました。使い方の誤りでした...

 私、DAOのアノテーションはARGSを使わずにQUERYばっかり使ってまして、キーでの検索でも
「hoge_QUERY = "key = ?"」というアノテーションを書いてます。

 このアノテーションがそのままWHERE句に埋め込まれるのですから、テーブル名が付かなく
て当たり前ですね。お騒がせしました。

 ARGSの方はどうも内部動作がよく分からない(何のためのものなのかよく分からない)の
で使ってなかったのです。用途を見る限り、SQLコメントでないと使えない気がして。

 今回ソースコードを追いかけてみて何となく分かりました。S2Dao内部では、SQLコメントで
使っているようなコメント付きSQL文を自動的に組み立ててるのですね。
 自動生成SQLのWHERE句に全カラムがそれぞれIF文付きで追加されてるところを見つけて、なる
ほどと思いました。これでARGSアノテーションがあれば、IFの条件を満たして、その部分の条件が
有効になるということだったのですね。

 いやはや、トラブルの原因はミスでしたが、調査して勉強になりました。

---------------------------------------------------
矢野 勉(やの つとむ)
電子メール:[E-MAIL ADDRESS DELETED]
---------------------------------------------------




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