Hibernate HQL like 语句的用法

String str = "中文字符串";

Stringhql="FROMTableAStWHEREt.fieldlike'%"+str+"%'";

Queryquery=getSession().createQuery(hql);

query.list();

使用这种形式传入参数str,会导致控制台输出:

FROMTableAStWHEREt.fieldlike'%????%'

之类的乱码,从而在数据库找不到匹配记录.

据说这是hibernate3.0like子句处理中文的一个问题,3.1已得到修正。3.0版可以通过设置参数解决。改正如下:

Stringstr="中文字符串";

Stringhql="FROMTableAStWHEREt.fieldLIKE:param";

Queryquery=getSession().createQuery(hql);

query.setString("param","%"+str+"%");

query.list();

一定要注意传进来的字符串变量是否现实乱码,如为乱码则永远查不到。

相关推荐