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

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

使用這種形式傳入?yún)?shù)str, 會(huì)導(dǎo)致控制臺(tái)輸出:
FROM Table AS t WHERE t.field like '% ????%'
之類的亂碼, 從而在數(shù)據(jù)庫(kù)找不到匹配記錄.

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

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