Closed koichik closed 9 years ago
http://ml.seasar.org/archives/seasar-user/2014-September/021950.html
以前のOracleでは、全角の"%"および"_"もワイルドカード文字であったため、エスケープの対象としていた。しかし最近のOracleでは全角の"%"および"_"はワイルドカード文字ではなくなり、エスケープするとSQLエラーとなる。
"%"
"_"
そのため、ワイルドカードを変更できるようLikeUtilにgetter/settterを追加した。
LikeUtil
旧バージョンのS2JDBCにおいてこの問題を回避するために、LikeUtilの定数フィールドをリフレクションで変更しているユーザが実在するため、互換性を損なわないように修正した。 具体的には、明示的にワイルドカードを設定していない場合にgetterは既存の定数を参照するようにしている。 追加したフィールドの初期値に定数を設定し、getterは常にフィールドを参照する方が自然な実装ではあるが、その場合はリフレクションで定数を変更してもgetterはその値を参照しないので互換性を失ってしまう。そのためこの方式は採用しなかった。
レビューお願いします。
:+1:
@manhole @nakamura-to レビューありがとうございました、マージしました。
http://ml.seasar.org/archives/seasar-user/2014-September/021950.html
以前のOracleでは、全角の
"%"
および"_"
もワイルドカード文字であったため、エスケープの対象としていた。しかし最近のOracleでは全角の"%"
および"_"
はワイルドカード文字ではなくなり、エスケープするとSQLエラーとなる。そのため、ワイルドカードを変更できるよう
LikeUtil
にgetter/settterを追加した。旧バージョンのS2JDBCにおいてこの問題を回避するために、
LikeUtil
の定数フィールドをリフレクションで変更しているユーザが実在するため、互換性を損なわないように修正した。 具体的には、明示的にワイルドカードを設定していない場合にgetterは既存の定数を参照するようにしている。 追加したフィールドの初期値に定数を設定し、getterは常にフィールドを参照する方が自然な実装ではあるが、その場合はリフレクションで定数を変更してもgetterはその値を参照しないので互換性を失ってしまう。そのためこの方式は採用しなかった。