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

kubo [E-MAIL ADDRESS DELETED]
2015年 1月 21日 (水) 15:38:54 JST


久保(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 メーリングリストの案内