【发布时间】:2010-10-01 15:29:54
【问题描述】:
在 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?p>
一些网站建议使用标准查询。由于我正在使用的框架的限制,这是不可能的。
【问题讨论】:
标签: c# nhibernate hibernate unicode hql