seasarorg / seasar2

S2Container
http://s2container.seasar.org/
74 stars 38 forks source link

[S2JDBC]Likeで使うワイルドカードを変更可能にしました [Seasar-user:21947] #9

Closed koichik closed 9 years ago

koichik commented 10 years ago

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

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

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

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

koichik commented 10 years ago

レビューお願いします。

manhole commented 9 years ago

:+1:

nakamura-to commented 9 years ago

:+1:

koichik commented 9 years ago

@manhole @nakamura-to レビューありがとうございました、マージしました。