GVKun编程网logo

Hibernate 如何处理 MSSQL nvarchar 字段 Unicode 字符(hibernate hql语句)

3

在这篇文章中,我们将带领您了解Hibernate如何处理MSSQLnvarchar字段Unicode字符的全貌,包括hibernatehql语句的相关情况。同时,我们还将为您介绍有关asp.net-m

在这篇文章中,我们将带领您了解Hibernate 如何处理 MSSQL nvarchar 字段 Unicode 字符的全貌,包括hibernate hql语句的相关情况。同时,我们还将为您介绍有关asp.net-mvc – 为什么在Asp.Net Identity 2.0 PhoneNumber是[nvarchar](max)、C 字形打印:直接 Unicode 或从 Unicode 到 XML 的转换、Delphi in a Unicode World Part II: New RTL Features and Classes to Support Unicode、Hibernate + MSSQL +通过包含进行全文本搜索的知识,以帮助您更好地理解这个主题。

本文目录一览:

Hibernate 如何处理 MSSQL nvarchar 字段 Unicode 字符(hibernate hql语句)

Hibernate 如何处理 MSSQL nvarchar 字段 Unicode 字符(hibernate hql语句)

请问 Hibernate 和 MSSQL 的 nvarchar 字段如何匹配起来(除去 HQL N''xxx'' 的形式)?

正常情况用 hibernate hql 查询数据库不能查到 unicode 字符的字段,因而在使用的时候如遇到数据库字段有 NVARCHAR 或 NCHAR 等字段时要对值做设定,设置 N''value'', 用于表示 unicode 数据的查询


现要使用其他办法来查询 unicode 字段和匹配 nvarchar 这种类型的字段

请问有熟悉 Hibernate 的朋友能指点



asp.net-mvc – 为什么在Asp.Net Identity 2.0 PhoneNumber是[nvarchar](max)

asp.net-mvc – 为什么在Asp.Net Identity 2.0 PhoneNumber是[nvarchar](max)

我在我的MVC 5项目中使用Asp.Net Identity 2.0.

为什么列PhoneNumber在sql Server数据库表[dbo]中使用[nvarchar](max).[AspNetUsers]?

例如,我可以将其更改为[nvarchar](64)吗?

解决方法

我创建了一个类ApplicationUser:IdentityUser,其中我用属性[MaxLength(64)]覆盖属性PhoneNumber.

public class ApplicationUser : IdentityUser
{
    [MaxLength(64)]
    public override string PhoneNumber { get; set; }

    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
    {
        var userIdentity = await manager.CreateIdentityAsync(this,DefaultAuthenticationTypes.ApplicationCookie);
        return userIdentity;
    }
}

C 字形打印:直接 Unicode 或从 Unicode 到 XML 的转换

C 字形打印:直接 Unicode 或从 Unicode 到 XML 的转换

如何解决C 字形打印:直接 Unicode 或从 Unicode 到 XML 的转换

我读到 here 可以像这样打印 UTF8 字形 Ș

  1. #include <locale.h>
  2. #include <stdio.h>
  3. #include <wchar.h> /* wint_t */
  4. int main(void)
  5. {
  6. setlocale(LC_ALL,"");
  7. printf("%lc\\n",(wint_t)536);
  8. return 0;
  9. }

在这种情况下,输出是输出:

  1. Ș

字形 Ș 可以表示为:

  1. 单个十六进制 Unicode 代码点:U+0218
  2. 两个连续的 UTF-8 字节:0xC8 0x98
  3. 单个 XML 十进制实体:&#536;

在答案中,他使用单个 XML 十进制条目 563 来打印字形...


我的问题

如果我从串行端口读取字节,我会将这个字形读取为两个连续的 UTF-8 字节 0xC8 0x98。然后我有一个函数来检查损坏的字节并在发现损坏的字节时丢弃整个字形。直到现在我都做了。

This 维基百科示例,尤其是该表让我了解如何转换 UTF-8 字节以计算单个 Unicode 代码点 U+0218。我希望我的函数将其作为十六进制值 0x0218 返回。

在 C 中是否有可能以某种方式将此十六进制 0x0218 打印为字形 Ș

如果这是不可能的,我如何将 Unicode 代码点十六进制 0x0218 转换为 XML 十进制条目 536,以便我能够像提供的答案那样打印它?

Delphi in a Unicode World Part II: New RTL Features and Classes to Support Unicode

Delphi in a Unicode World Part II: New RTL Features and Classes to Support Unicode

总结

以上是小编为你收集整理的Delphi in a Unicode World Part II: New RTL Features and Classes to Support Unicode全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

Hibernate + MSSQL +通过包含进行全文本搜索

Hibernate + MSSQL +通过包含进行全文本搜索

我的目标是将MSSQL全文功能与HQL一起使用。在哪种情况下,我编写了一个特定的SQLFunction,将我的“全文”函数映射到contains函数。

但是,问题在于,在HQL中(似乎)我必须明确使用返回类型,MSSQL Contains函数不使用或不接受该返回类型。

这就是它在MSSQL中的工作方式:

select distinct id from content c where CONTAINS(c.content, ''p'')

这是我在HQL中使用它的想法:

select id from Content c  where fulltext(c.content, ''p'')

这不起作用,因为HQL需要返回类型。例如,这将在HQL中解析:

select id from Content c  where fulltext(c.content, ''p'') = true

它将生成为SQL:

select distinct id from content c where CONTAINS(c.content, ''p'') = 1

在MS SQL中不起作用。

到目前为止,我的想法是,但是在这种设置下似乎是不可能的:

  1. 使hibernate解析函数没有返回值(在我使用的版本中,Hibernate不支持此功能)
  2. 尝试混合使用HQL和SQL(似乎也不起作用)

有人有其他想法或帮助吗?

我使用的Hibernate版本是3.2.6ga和MSSQL Server 2008。

答案1

小编典典

我找到了一种对我有用的方法。

而不是产生

CONTAINS(a,b)

它会产生

CONTAINS(a,b) AND 1

并结合HQL查询

fulltext(a,b) = true

它将导致:

CONTAINS(a,b) AND 1 = 1

而且有效。

我们今天的关于Hibernate 如何处理 MSSQL nvarchar 字段 Unicode 字符hibernate hql语句的分享已经告一段落,感谢您的关注,如果您想了解更多关于asp.net-mvc – 为什么在Asp.Net Identity 2.0 PhoneNumber是[nvarchar](max)、C 字形打印:直接 Unicode 或从 Unicode 到 XML 的转换、Delphi in a Unicode World Part II: New RTL Features and Classes to Support Unicode、Hibernate + MSSQL +通过包含进行全文本搜索的相关信息,请在本站查询。

本文标签: