在SQL可以编写一个查询,搜索一个人的这样一个名字:unicode字符串在Hibernate查询
SELECT * FROM Person P WHERE P.Name LIKE N'%ike%'
此查询将Unicode字符(假设名称列和数据库都安装运行处理unicode支持)。
我在HQL(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?
有几个网站建议使用标准查询。由于我在工作的框架中存在一些限制,这是不可能的。
我递归构建一个复杂的查询字符串不同的标准和操作。我有一个提供者,我将操作和术语传入以获取“喜欢”部分。如果我不这样做,这将工作!我希望有一些神奇的逃生角色。 – 2009-01-15 19:39:35
不幸的是,查询中可用参数的数量有限制,所以这不是最终的解决方案。 – spartaco 2017-07-25 13:55:13