1

同様のステートメントを実行しているいくつかの単純なドメイン オブジェクトがあります。表のデータには、この中に下線が含まれていることがよくあります。問題は、アンダースコアが oracle のワイルドカード文字であり、like ステートメントで使用されていることです。これまでのところ、これは私が見つけたクローズピースですが、うまく機能していないようです。

MyDomain{
def columnOne
def columnTwo
}

def results = myDomain.createCriteria().list(max:10, offset:10){
ilike("columnTwo","%BOB\_%")
sqlRestriction("ESCAPE \\")
}

実行中のSQLは

select count(*) as y0_ from MY_SCHEMA.MY_DOMAIN this_ where
lower(this_.COLUMN_TWO) like ?
and ESCAPE '\'

クエリで sqlRestriction 句が AND としてタグ付けされているようです。これを回避する方法はありますか、または基準をフォーマットするより良い方法はありますか?

4

1 に答える 1

2

1つの方法は、同様のものをsqlRestrictionとして使用し、ここに表示されているように文字列にエスケープを追加すること です

def results = myDomain.createCriteria().list(max:10, offset:10){
  sqlRestriction("lower(column_two) like '%bob\_%' ESCAPE '\\' ")
}
于 2012-09-19T17:56:01.347 に答える