在 SQL 中,可以编写一个查询来搜索一个人的姓名,如下所示:
SELECT * FROM Person P WHERE P.Name LIKE N'%ike%'
此查询将使用 unicode 字符运行(假设 Name 列和数据库已设置为处理 unicode 支持)。
我在 Hibernate (NHibernate) 运行的 HQL 中有一个类似的查询。生成的查询如下所示:
SELECT P FROM SumTotal.TP.Models.Party.Person P join P.Demographics PD WHERE (PD.LastName LIKE '%カタカ%' )
不幸的是,在 HQL 中的文字前面放置一个“N”会导致错误。我尝试转义字符串中的 unicode 字符,但仍然没有成功。
数据库正在接受并保存来自 Hibernate 的 unicode 字符。我已经能够成功地用一个 unicode 字符串填充一个对象,用 Hibernate 保存它,并在数据库中验证它。在我看来,我不能在自定义查询中使用 unicode 字符串(或者我也假设命名查询)有点奇怪。
这是 Hibernate (Nhibernate) 的已知问题还是限制?你如何在 HQL 中使用 unicode?
一些网站建议使用 Criteria 查询。由于我正在使用的框架中的限制,这是不可能的。