seasarorg/seasar2 — pull request #9 by koichik (2014-10-04 16:10:23+00:00)
Title: [S2JDBC]Likeで使うワイルドカードを変更可能にしました [Seasar-user:21947]

http://ml.seasar.org/archives/seasar-user/2014-September/021950.html

以前のOracleでは、全角の`"％"`および`"＿"`もワイルドカード文字であったため、エスケープの対象としていた。しかし最近のOracleでは全角の`"％"`および`"＿"`はワイルドカード文字ではなくなり、エスケープするとSQLエラーとなる。

そのため、ワイルドカードを変更できるよう`LikeUtil`にgetter/settterを追加した。

旧バージョンのS2JDBCにおいてこの問題を回避するために、`LikeUtil`の定数フィールドをリフレクションで変更しているユーザが実在するため、互換性を損なわないように修正した。
具体的には、明示的にワイルドカードを設定していない場合にgetterは既存の定数を参照するようにしている。
追加したフィールドの初期値に定数を設定し、getterは常にフィールドを参照する方が自然な実装ではあるが、その場合はリフレクションで定数を変更してもgetterはその値を参照しないので互換性を失ってしまう。そのためこの方式は採用しなかった。