hibernate 3.6 を使用していますが、criteria.list の使用に問題があります。"d'eau" や "d´eau" のような引用符やアクセントを含む検索語が必要です。私のコードは次のようなものです:
Criteria criteria;
criteria.add(Restrictions.ilike("nameParam", "d''eau", MatchMode.ANYWHERE));
SQL Server データベースを使用しているため、2 つの一重引用符を付けました。単一引用符は別の単一引用符でエスケープされるため、2 つの単一引用符があります。ステートメントの結果は 0 ですが、SQL サーバー クライアントのログに出力された 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
そして、なぜこれが起こるのか理解できません。私の英語が下手ならごめんなさい