[Seasar-user:22033] Re: 【DBFlute】OracleでのLikeSerachのエスケープ処理自動解決について

mitsu [E-MAIL ADDRESS DELETED]
2015年 1月 21日 (水) 19:04:54 JST


久保さん

成田です。
頂いた情報、大変参考になります。

初期化処理も既に別件で実装しているので
追加処理の検討としておりますが、
instrでの対応も性能見合いでと考えております。

いずれにしてもDBFlute/Oracleでのバージョン差異を
考慮できるかとしておりますので
本件、こちらの回答にてクローズいただければと思います。

お忙しい所ありがとうございました。

2015年1月21日 15:38 kubo <dbflute @ gmail.com>:

> 久保(jflute)です
>
> もし、DBDef.switchDBWay()で回避するようでしたら、
> アプリの初期化タイミングでswitchさせるといいです。
> ただ、web起動時だけだとJUnitのテストのときは利かないとかあるので、
> DBFluteInitializerのサブクラスを作って登録(+自動生成)すると、
> diconに組み込まれてどの環境で起動してもswitchされます。
>
> // dfprop - extendedDBFluteInitializerClass
>
> http://dbflute.seasar.org/ja/manual/reference/dfprop/littleadjustment/#extendeddbfluteinitializerclass
>
> switchDBWay()の引数には、
> 独自に作ったWayOfOracleのサブクラスをnewして入れます。
> そのサブクラスでは getOriginalWildCardList() をオーバーライドして、
> 空リストを戻します。
>
>
> 2015-01-21 14:11 GMT+09:00 mitsu <trickster.m.3 @ gmail.com>:
> > 久保さん
> >
> > お世話になります。成田です。
> >
> > 早速のご回答、ありがとうございます。
> > ・・・なるほど。すでにこのようなお話があったのですね。。
> > 対応の指針になります。大変助かりました。
> >
> >
> > 以上、よろしくお願いいたします。
> >
> > 2015年1月21日 14:04 kubo <dbflute @ gmail.com>:
> >
> >> 久保(jflute)です
> >>
> >> 成田さん、こんにちは
> >>
> >> 取り急ぎですが、こちらのやり取りを読んでくださいませ。
> >>
> >> // Oracle11gR2でLike検索でエラーになるケース
> >> https://groups.google.com/forum/#!topic/dbflute/LzuHYseRtmA
> >>
> >> 特にこの辺:
> >> > Oracleのバグのようです。(11.2.0.3.0のみ。11.2.0.4.0、12cでは直っているようです。)
> >> > http://www.eygle.com/Notes/1562142.1-BugList-11.2.0.4.html
> >> > のリンク[14157408」
> >> > ※リンク先は、Oracleのサポート契約が必要。
> >>
> >> Oracleの詳細なバージョンを調べてみてください。
> >> 回避できないようであれば、DBDef.switchDBWay()を使うとう流れですね。
> >>
> >>
> >> 2015-01-21 13:49 GMT+09:00 mitsu <trickster.m.3 @ gmail.com>:
> >> > お世話になります。成田と申します。
> >> >
> >> > 以下の環境にて開発をしておりますが確認したいことがあります。
> >> >
> >> > DBFlute:1.0.5L
> >> > DB:Oracle11gR2
> >> >
> >> > 全角パーセントで検索を実行するとエスケープ対象となり
> >> > エラーとなってしまいます。
> >> > エスケープせずに検索実行したいのですが
> >> > ご教授いただけますでしょうか。
> >> > ※半角については想定通りの動きです。
> >> >
> >> > DBFluteの仕様より、「全角がワイルドカードにならないDBMSでも、
> >> > そのエスケープ文字は単に無視されるだけですので動作に影響はありません。」
> >> > とありますが、バージョンによる差異なのか、こちらの解釈の違いなのか・・・
> >> > 現状その仕様とは異なる動きをしていると見ております。
> >> >
> >> > 以下ページ参照
> >> >
> >> >
> http://dbflute.seasar.org/ja/manual/function/ormapper/conditionbean/query/likesearch.html
> >> >
> >> > 出力されたエラーですが、以下が出力されています。
> >> > 外だしSQLで、「likeContain!!」を指定しています。
> >> >
> >> > [SQLException]
> >> > java.sql.SQLDataException
> >> > ORA-01424: エスケープ文字に続く文字がないか、または無効です。
> >> >
> >> > 〜〜SQLログ抜粋〜〜
> >> > hoge_name like '%|%%' escape '|'
> >> > 〜〜SQLログ抜粋〜〜
> >> >
> >> > Oracleについては、全角パーセントは無視されずに
> >> > エスケープされる仕様なのでしょうか。
> >> > アプリ側で対応するべきかの判断にも影響してくるため
> >> > ご確認のほどお願いいたします。
> >> >
> >> > --
> >> >
> >> > _______________________________________________
> >> > Seasar-user mailing list
> >> > Seasar-user @ ml.seasar.org
> >> > https://ml.seasar.org/mailman/listinfo/seasar-user
> >> >
> >> _______________________________________________
> >> Seasar-user mailing list
> >> Seasar-user @ ml.seasar.org
> >> https://ml.seasar.org/mailman/listinfo/seasar-user
> >
> >
> >
> > _______________________________________________
> > Seasar-user mailing list
> > Seasar-user @ ml.seasar.org
> > https://ml.seasar.org/mailman/listinfo/seasar-user
> >
> _______________________________________________
> Seasar-user mailing list
> Seasar-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20150121/fddb1e88/attachment.html>


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