Hibernate Query Escape (из Grails 'GORM) - снова - PullRequest
1 голос
/ 22 июня 2011

Я видел много связанных вопросов, но ни один из них не является точно моей проблемой.

Общий вопрос: где конкретно указано, как вещи экранируются в Hibernate, в частности для Grails GORM?

Особая проблема:

Я хочу выполнить это:

"WHERE extractValue(field, '//value[@my_attribute=\""+localeStr+"\"]')"

Вы можете заметить, что localeStr не экранирован и включен в другую строку строки.Как я могу избежать этого, если это возможно с параметром (что-то вроде: параметр)?

Спасибо.

1 Ответ

0 голосов
/ 22 июня 2011

Здесь, я полагаю, в разделе «Параметры привязки» . Плюс генерал Groovy убегает.

Хотя, извините, не понятно - уйти от чего? Вам нужно localeStr, чтобы содержать параметр или наоборот, чтобы очистить любой возможный параметр?

Удаление ":" и "?" должно сделать, как для меня. Хотя в любом случае плохая идея объединить ненадежного String непосредственно в запрос.

Наилучший подход к очистке параметра String - передать его в качестве параметра:

DomainClass.findAll(
   "WHERE extractValue(field, '//value[@my_attribute=:attrValue]',
   [attrValue: localeStr])")

См. findAll () doc .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...