Неправильное использование функции STR () в HQL - PullRequest
3 голосов
/ 20 августа 2010

С этим HQL-запросом:

SELECT DISTINCT fs FROM FileStatus fs WHERE UPPER(STR(fs.filePath)) LIKE :FILE_PATH

Я получаю:

javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query
    at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:637)
    at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:74)

и с моим FILE_PATH именованным параметром у меня есть следующее на карте:

paramMap.put("FILE_PATH", "%PATHNAME%");

Понятия не имею, почему это происходит. Чтобы сделать вещи более запутанными (или, может быть, это поможет всем), если я использую число в пути к файлу, например paramMap.put("FILE_PATH", "%23%");, оно работает просто отлично.

Карта параметров передается в метод DAO.read () вместе с запросом. Hibernate обрабатывает все остальное. Примерно так:

fileStatusDao.read(query, parameterMap);

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 23 августа 2010

В итоге проблема заключалась в том, что я использовал функцию STR () для атрибута, который уже был строкой.

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