Я попробовал добавить его в существующий фильтр, вот так< /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
Код: Выделить всё
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
Мобильная версия