首页 > 解决方案 > 转义 HQL 查询中的特殊字符

问题描述

我有以下代码

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;
}

尽管用户表中存在用户名 = People's Democratic的用户,但此代码在线给出异常

查询.getSingleResult()

抛出以下异常:

javax.persistence.EntityNotFoundException:无法找到 com.domain.User 的 id .....

我尝试使用转义用户名

StringEscapeUtils.escapeSql(userName) 块引用

但这没有帮助。

请帮忙。提前致谢。

标签: mysqlhibernatejpahqlspecial-characters

解决方案


推荐阅读