String str = "中文字符串";
String hql = "FROM Table AS t WHERE t.field like '%" + str + "%'";

Query query = getSession().createQuery(hql);
query.list();

使用這種形式傳入參數str, 會導致控制臺輸出:
FROM Table AS t WHERE t.field like '% ????%'
之類的亂碼, 從而在數據庫找不到匹配記錄.

據說這是hibernate3.0 like子句處理中文的一個問題, 3.1已得到修正。3.0版可以通過設置參數解決。改正如下:

String str = "中文字符串";
String hql = "FROM Table AS t WHERE t.field LIKE :param";
Query query = getSession().createQuery(hql);
query.setString("param", "%" + str + "%");
query.list();