方法:
hql.append(" and icon like :icon escape '~' ");
parameters.put("icon", this.getLikeKeyworkdLike12(icon));
/**
* like12 add,20190417,解决hql查询条件 不能带下划线'_'的问题
* (需配合“escape '~'”使用)
* @param keyword
* @return
*/
public String getLikeKeyworkdLike12(String keyword) {
keyword = keyword.replace("_", "~_");
return "%" + keyword + "%";
}
原因:
简单的说,要把待查询的字符串里面的_和%替换为\_和\%
还有一种写法,如 select * from user where name like '%/%%' escape '/'