S2Dao の SQL コメントでハマッたこと
落ち着いてきたので、今回係った開発プロジェクトで実際にあったハマリネタをひとつ紹介します。
select tab1.col1 from tab1 where col1 = 'foo' /*IF param=='hoge'*/ and col2 = 'bar' /*END*/
と書いたとき、IFブロックが想定通りに評価されません。
S2Dao の SQL コメントに書ける式は OGNL 式なので、
select tab1.col1 from tab1 where col1 = 'foo' /*IF param=="hoge"*/ and col2 = 'bar' /*END*/
のようにダブルクォートで囲まないと文字列として認識してくれないというオチ。
シングルクォートだと、char として解釈されてしまうみたい。
そういえば、何ヶ月か前から OGNL のサイトが丸ごと削除されてしまっているんだけど、プロジェクトが解散したんだろうか?
メンテはされないんだろうか。せめてリファレンスドキュメントくらいは残しておいてほしいんだけど・・・。
なお、OGNLの簡単な解説は以下にあります。
http://s2container.seasar.org/2.4/ja/ognl.html