Передать sqlRestriction в критерии – плохая грамматика sqlJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Передать sqlRestriction в критерии – плохая грамматика sql

Сообщение Anonymous »

Поэтому я хочу добавить sqlRestriction в свои критерии, потому что мое поле данных необходимо обрезать, прежде чем я захочу его проверить.
Я попробовал добавить его в существующий фильтр, вот так< /p>

Код: Выделить всё

public List findByFilter(Filter filter) {
DetachedCriteria criteria = DetachedCriteria.forClass(getPersistentClass());
String alias = getAlias(criteria); // outputs "this."

criteria.add(eq(alias + "foo", filter.getFoo());
criteria.add(Restrictions.sqlRestriction("trim(" + alias + "bar) like %" + filter.getBar()));

return findByCriteria(criteria, 0, filter.getMaxRows());
}
поэтому мои критерии записи выглядят так
criteria>criteria>criterionEntries=

Код: Выделить всё

this.foo=1
trim(this.bar) like %2
сейчас, если этот запрос запускается (спящий режим), я получаю неверную грамматическую ошибку sql

Код: Выделить всё

org.springframework.jdbc.BadSqlGrammarException: Hibernate operation: could not execute query; bad SQL grammar

Код: Выделить всё

java.sql.SQLSyntaxErrorException: unknown token:  in statement[
select
this_.IDFOO as IDFOO,
this_.IDBAR as IDBAR
from
TABLE this_
where trim(this.bar) like %2
]

Итак, я понимаю, почему синтаксис неправильный, но не понимаю, почему.
Почему мое this.field неправильно сопоставлено с полем базы данных?
Почему это это место, а не предыдущее?
как это исправить?
ELI5:
в моей базе данных есть данные, содержащие пробелы который мне нужно удалить, прежде чем я смогу фильтровать
поэтому мой фильтр X должен соответствовать dbvalue '0X ' (char(9))
Мой фильтр работает отлично без этой отделки, но я хочу добавить вот это.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ql-grammar
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»