[Seasar-user:14165] Re: DBFlute LikeSearchOptionでの半角スペース処理

宇枝 祐樹 [E-MAIL ADDRESS DELETED]
2008年 5月 14日 (水) 18:14:17 JST


久保様

お世話になっております。
上田です。

下記、ありがとうございます。

>mydbflute/dbflute-0.6.4/templates/om/java/allcommon/cbean/coption/parts
こちら確認してみたいと思います。

>その方法だと、LikeSearchOptionの他の機能が
>利用できなくなりますが、非常にマニアックな機能ですので
>利用されていないならばそれでもOKです。
>(大文字小文字変換、半角変換、日本語変換機能ですね)

今回は入力された文字列をそのまま検索にかけておりますが
>半角変換、日本語変換機能
の機能があることは存じませんでした。

ちょっと調べてみようと思います。


kubo さんは書きました:
> 久保です。
>
>   
>>  こちらの回避方法ですが、修正するテンプレートがわかりませんで
>>  自動生成されるクラス(LikeSearchOptionなど)の内部処理を
>>  調整できるファイルがあるのでしょうか?
>>     
>
> DBFlute本体モジュールの
> mydbflute/dbflute-0.6.4/templates/om/java/allcommon/cbean/coption/parts
> 配下のxxx.vmファイルになります。
>
>   
>>  LikeSearchOptionで利用していたメソッドを独自作成クラスで
>>  再定義し、
>>  LikeSearchOption#generateRealValue(String value)にあった
>>  value = super.generateRealValue(value);
>>  を再定義したメソッドで削除する形にすることで、
>>  回避はできているようです。
>>     
>
> その方法だと、LikeSearchOptionの他の機能が
> 利用できなくなりますが、非常にマニアックな機能ですので
> 利用されていないならばそれでもOKです。
> (大文字小文字変換、半角変換、日本語変換機能ですね)
>
>
> 2008/5/14 宇枝 祐樹 <[E-MAIL ADDRESS DELETED]>:
>   
>> 久保様
>>
>>  お世話になっております。
>>  上田です。
>>
>>  現状の回避方法で質問させていただきたくメールいたしました。
>>
>>
>>  >A. テンプレートを修正してしまう。
>>  >上記3つのクラスのgenerateRealValue()の引数チェックを
>>  >まるごと削除して自動生成し直します。
>>
>>  こちらの回避方法ですが、修正するテンプレートがわかりませんで
>>  自動生成されるクラス(LikeSearchOptionなど)の内部処理を
>>  調整できるファイルがあるのでしょうか?
>>  (自動生成されたクラスに手を加えても認識されないのですね。)
>>
>>  >B. LikeSearchOptionを継承した独自クラスを作成する。
>>  こちら作成してみました。
>>
>>  LikeSearchOptionで利用していたメソッドを独自作成クラスで
>>  再定義し、
>>  LikeSearchOption#generateRealValue(String value)にあった
>>  value = super.generateRealValue(value);
>>  を再定義したメソッドで削除する形にすることで、
>>  回避はできているようです。
>>
>>  上田
>>
>>  kubo さんは書きました:
>>
>>
>>     
>>> 久保です。
>>>       
>>  >
>>  >
>>  >>  申し訳ありません。こちらDBFluteのバグです。
>>  >>  そもそもここに引数はチェック不要です。
>>  >>  次バージョンでは直したものを反映させます。
>>  >>
>>  >
>>  > 新バージョンで直して、検証テストも追加しました。
>>  > 今週末あたりでリリースいたします。
>>  >
>>  > 2008/5/13 kubo <[E-MAIL ADDRESS DELETED]>:
>>  >
>>  >> 久保です。
>>  >>
>>  >>  上田さん、こんばんわ
>>  >>
>>  >>
>>  >>  ToUpperLowerCaseOptionParts
>>  >>  ToSingleByteOptionParts
>>  >>  JapaneseOptionPartsAgent
>>  >>  のgenerateRealValue()の引数チェックですね。
>>  >>
>>  >>  if (value == null || value.trim().length() == 0) {
>>  >>
>>  >>  申し訳ありません。こちらDBFluteのバグです。
>>  >>  そもそもここに引数はチェック不要です。
>>  >>  次バージョンでは直したものを反映させます。
>>  >>
>>  >>  ご利用のバージョンのままでの回避方法ですが、
>>  >>
>>  >>  A. テンプレートを修正してしまう。
>>  >>
>>  >>  上記3つのクラスのgenerateRealValue()の引数チェックを
>>  >>  まるごと削除して自動生成し直します。
>>  >>
>>  >>  B. LikeSearchOptionを継承した独自クラスを作成する。
>>  >>
>>  >>  LikeSearchOptionさえ継承していれば動きますので、
>>  >>  サブクラスでオーバーライドして動きを変えてしまえば
>>  >>  回避できるかもしれません。
>>  >>
>>  >>
>>  >>
>>  >>  2008/5/13 宇枝 祐樹 <[E-MAIL ADDRESS DELETED]>:
>>  >>
>>  >>
>>  >>
>>  >>> いつもお世話になっております。
>>  >>>
>>  >>  >  上田と申します。
>>  >>  >
>>  >>  >  DBFluteのLikeSearchOptionで質問させていただきたいです。
>>  >>  >
>>  >>  >  ------------------
>>  >>  >  環境
>>  >>  >  Seasar2 2.4.22
>>  >>  >  dbflute-0.6.4
>>  >>  >  --------------------
>>  >>  >
>>  >>  >  検索条件に半角スペースのみ入力した場合にExceptionが発生してしまい
>>  >>  >  回避方法が見つからずにおります。
>>  >>  >
>>  >>  >  Exceptionは
>>  >>  >  java.lang.IllegalArgumentException: The argument[value] should not be null.
>>  >>  >  と出ております。
>>  >>  >
>>  >>  >  内部でjava.lang.String.trim()がかかっており、その為だとは思うのですが、
>>  >>  >  これを回避する方法をご存知の方、いらっしゃらないでしょうか?
>>  >>  >
>>  >>  >  外だしSQLですと、現在の実装方法とだいぶ異なってしまうので
>>  >>  >  避けたいところではあるのですが。
>>  >>  >
>>  >>  >  恐れ入りますが、ご教授のほど、宜しくお願い致します。
>>  >>  >
>>  >>  >  上田
>>  >>  >
>>  >>  >
>>  >>  >
>>  >>  >  _______________________________________________
>>  >>  >  Seasar-user mailing list
>>  >>  >  [E-MAIL ADDRESS DELETED]
>>  >>  >  https://ml.seasar.org/mailman/listinfo/seasar-user
>>  >>  >
>>  >>
>>  >>
>>  > _______________________________________________
>>  > Seasar-user mailing list
>>  > [E-MAIL ADDRESS DELETED]
>>  > https://ml.seasar.org/mailman/listinfo/seasar-user
>>  >
>>  >
>>  >
>>  >
>>
>>
>>  _______________________________________________
>>  Seasar-user mailing list
>>  [E-MAIL ADDRESS DELETED]
>>  https://ml.seasar.org/mailman/listinfo/seasar-user
>>
>>     
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>
>
>   


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