我正在使用hibernate 3.6,但在使用criteria.list 时遇到问题。我需要带有引号或重音的搜索词,例如“d'eau”或“d´eau”。我的代码是这样的:
Criteria criteria;
criteria.add(Restrictions.ilike("nameParam", "d''eau", MatchMode.ANYWHERE));
我放了两个单引号,因为我正在使用 sql server 数据库。有 2 个单引号,因为单引号与另一个单引号一起转义。该语句有 0 个结果,但是如果我在 sql server 客户端执行日志中打印的 sql 语句,我会得到 120 个结果。
使用 HQL 和相同的 sql 语句进行测试。我明白了:
String hqlQuery = "select distinct(t) from Table t where b.idCon in (select t2.idCon from Table t2 where lower(t2.outTerTb) like '%d''eau%')";
List qwer = getEntityManager().createQuery(hqlQuery).getResultList();
System.out.println("qwer.size() -> " + qwer.size());
String hqlQuery2 = "select distinct(t) from Table t where b.idCon in (select t2.idCon from Table t2 where lower(t2.outTerTb) like :param)";
List qwer2 = getEntityManager().createQuery(hqlQuery2).setParameter("param", "%d''eau%").getResultList();
System.out.println("qwer2.size() -> " + qwer2.size());
此代码打印:
qwer.size() -> 120
qwer2.size() -> 0
我不明白为什么会这样。对不起,如果我的英语不好