

あるテーブルにて対してModelクラスを作成し、あいまい検索を行うように以下のような処理を実装しました。

[code]

    List<Modelクラス> result = Modelクラス.find.where().or().like("カラム名","%検索文字列%").findList();
    
[/code]

エスケープ処理を行う必要がありと思いましたが、application.logを見るとすでに  
`select xxx from テーブル名 where カラム名 like '%xxxx%' escape'';`  
とエスケープ処理されているログが残っていました。

`escape ''`の文字を指定したいのですが、プログラム中に記載するのか、confファイルなどで定義できるのかわからず質問させていただきました。  
よろしくお願いします。


CC BY-SA 3.0
2016-12-22T11:41:43.943
31317
2018-04-07T17:28:58.577
2017-02-10T16:33:49.083
3068
19988
question
java playframework
LIKE検索を行う際のエスケープ文字を指定したい


質問文に記載されていないので推測ですが、Ebeanの質問と解釈して回答します。  
(違う場合は使用されているフレームワークとそのバージョンを質問文に追記してください)

Ebeanの最新(10.1.5)のソースコードを確認する限り、そもそもLike句でescape文字を指定することはできないようです。

<https://github.com/ebean-
orm/ebean/blob/ebean-10.1.5/src/main/java/io/ebean/config/dbplatform/mysql/MySqlPlatform.java#L31>

<https://github.com/ebean-
orm/ebean/blob/ebean-10.1.5/src/main/java/io/ebean/config/dbplatform/postgres/PostgresPlatform.java#L29>

つまりEbeanとしては、Like句内でエスケープする必要のある文字は、データベースプラットフォームに応じたデフォルトのエスケープ文字でエスケープされていることを期待しているようです。

例えばMySQLの場合は、バックスラッシュ(`\`)でエスケープする必要があります。

<https://dev.mysql.com/doc/refman/5.6/ja/string-literals.html#character-
escape-sequences>


CC BY-SA 3.0
2017-02-10T16:46:42.797
32570
2017-02-10T16:46:42.797
3068
31317
answer