Escape-специальный символ в HQL-запросе - PullRequest
0 голосов
/ 25 мая 2018

У меня следующий код

public User findUser(){

    User user = null;
    String userName = "People's Democratic";

    String queryString = "SELECT user from User user where user.userName = :userName ";

    Map<String, Object> param = new HashMap<String, Object>();  
    param.put("userName", userName);

    try {

        final Query query = entityManager.createQuery(queryString);
        Set<Map.Entry<String, Object>> parameters = param.entrySet();

        for (Map.Entry<String, Object> parameter : parameters) {
            query.setParameter(parameter.getKey(), parameter.getValue());
        }

        user = (User) query.getSingleResult();

    } catch (Exception e) {
        logger.error("Exception in fetching user for the user = "+userName+ " and queryString = "+queryString, e);

        if (e instanceof NoResultException) {
            // User not found
        }
    }
     return user;
}

Хотя пользователь с именем пользователя = Народная демократия присутствует в таблице пользователей, этот код дает исключение в строке

query.getSingleResult ()

Выдается следующее исключение:

javax.persistence.EntityNotFoundException: Невозможно найти com.domain.User с идентификатором .....

Я попытался экранировать имя пользователя с помощью

StringEscapeUtils.escapeSql (userName) Blockquote

, но это не помогло.

Пожалуйста, помогите.Заранее спасибо.

...